上一次用浏览器里面简单的进行了测试,得到的数据是swig是ejs的速度的一倍左右,这次在控制台进行测试,能够得到比较精确的数据,并加入了dot一块儿进行测试。

测试数据是一百万条记录

创建测试数据createdata.js:

var testData = {
title:'测试标题',
description: '<p>这是一个描述,里面用很多标签,有<h1>h1标签</h1><h2>h2标签</h2><h3>h3标签</h3><h4>h4标签</h4><h5>h5标签</h5><p>但是不会解析',
datas : createData()
};
function createData(){
var array = new Array();
for(var i = 0; i < 1000000; i++){
array[i] = {name: "我是data" + i, age: i, comp: '一个大公司'};
}
return array;
} module.exports = testData;

测试文件run.js:

var swig = require('swig');
var ejs = require('ejs');
var doT = require('dot'); var testdata = require('./createdata'); var templateString = null;
var fs = require('fs'); var templateSwig = '标题:{{title}} 描述:{{description}} 列表:<ul>{% for item in datas -%} <li>姓名:{{item.name}} 年龄:{{item.age}} 公司:{{item.comp}}</li>{%- endfor%}</ul>'; var templateEjs = '标题:<%= title %> 描述:<%= description %> 列表:<ul><% datas.forEach(function(item) { %><li>姓名:<%= item.name %> 年龄:<%= item.age %> 公司:<%= item.comp %></li><% }); %></ul>'; var templateDoT = '标题:{{= it.title}} 描述:{{= it.description}} 列表:<ul>{{for(var item in it.datas) { }}<li>姓名:{{=item.name}} 年龄:{{=item.age}} 公司:{{=item.comp}}</li>{{ } }}</ul>' console.log("--------------开始测试--------------\n\n");
console.log("--------------正在测试SWIG--------------");
var star = new Date().getTime();
console.log("开始时间:",star); swig.render(templateSwig, {locals:testdata} ); var end = new Date().getTime(); console.log("结束时间:",end);
console.log("%d条数据SWIG用时%\d毫秒\n",testdata.datas.length,end - star); console.log("--------------正在测试EJS--------------");
star = new Date().getTime();
console.log("开始时间:",star);
ejs.render(templateEjs, testdata); end = new Date().getTime(); console.log("结束时间:",end);
console.log("%d条数据EJS用时%\d毫秒\n",testdata.datas.length,end - star); console.log("--------------正在测试DOT--------------");
star = new Date().getTime();
console.log("开始时间:",star); doT.template(templateDoT)(testdata); end = new Date().getTime();
console.log("结束时间:",end);
console.log("%d条数据DOT用时%\d毫秒",testdata.datas.length,end - star);

一百万条数据时测试的结果如下:

--------------正在测试SWIG--------------

开始时间: 1421387088710

结束时间: 1421387097640

1000000条数据SWIG用时8930毫秒

--------------正在测试EJS--------------

开始时间: 1421387097645

结束时间: 1421387126751

1000000条数据EJS用时29106毫秒

--------------正在测试DOT--------------

开始时间: 1421387126754

结束时间: 1421387130656

1000000条数据DOT用时3902毫秒

测试结果显示:doT最快,是swig的一倍还多,swigejs的3倍多

十万条数据时测试结果如下:

--------------正在测试SWIG--------------

开始时间: 1421389083284

结束时间: 1421389084332

100000条数据SWIG用时1048毫秒

--------------正在测试EJS--------------

开始时间: 1421389084335

结束时间: 1421389087374

100000条数据EJS用时3039毫秒

--------------正在测试DOT--------------

开始时间: 1421389087377

结束时间: 1421389087890

100000条数据DOT用时513毫秒

一万条数据时测试结果如下:

--------------正在测试SWIG--------------

开始时间: 1421389209634

结束时间: 1421389210048

10000条数据SWIG用时414毫秒

--------------正在测试EJS--------------

开始时间: 1421389210054

结束时间: 1421389210387

10000条数据EJS用时333毫秒

--------------正在测试DOT--------------

开始时间: 1421389210392

结束时间: 1421389210417

10000条数据DOT用时25毫秒

可见在一万条数据的时候EJS居然比SWIG快了,不过还是DOT一马当先。

模板选择不光要考虑速度,还有考虑学习成本,使用习惯,团队合作等多种因素。对速度有所了解好,下一次开始考虑项目中要选择哪个模板引擎。

原文地址:ejs和swig对比问题之二

ejs和swig对比问题之二的更多相关文章

  1. ejs和swig对比的问题之一

    本来想测试下两者在nodejs中得执行速度,设置了一个测试数据,如下 var testData = { title:'测试标题', description: '<p>这是一个描述,里面用很 ...

  2. Apache 流框架 Flink,Spark Streaming,Storm对比分析(二)

    本文由  网易云发布. 本文内容接上一篇Apache 流框架 Flink,Spark Streaming,Storm对比分析(一) 2.Spark Streaming架构及特性分析 2.1 基本架构 ...

  3. 电子助视仪 对比增强算法 二十种色彩模式(Electronic Video Magnifier, 20 color mode)

    电子助视仪 是一种将原始彩色图像转换为某种对比度高的图像,例如将原始图像变换为黑底白字,红底白字,白底红字,蓝底黄字,黄字蓝底等等.电子助视仪的主要应用场景为为老人或者特殊弱视人群的阅读.国内国外均有 ...

  4. python与php生成二维码对比

    php生成二维码 include 引入的库单独下载 <?php header("Content-type:text/html;charset=utf-8"); error_r ...

  5. background-image 与 img 动画性能对比

    开发H5常常会用到滑屏,目前大部分滑屏插件都是通过控制页面的transform属性来实现.尽管如此,我总是发现自己的H5滑动起来就是不如网上一些优秀案例流畅,表现为滑动动画会出现卡顿.跳帧. 后来我发 ...

  6. python下实现二叉堆以及堆排序

    python下实现二叉堆以及堆排序 堆是一种特殊的树形结构, 堆中的数据存储满足一定的堆序.堆排序是一种选择排序, 其算法复杂度, 时间复杂度相对于其他的排序算法都有很大的优势. 堆分为大头堆和小头堆 ...

  7. Apache 流框架 Flink,Spark Streaming,Storm对比分析(一)

    本文由  网易云发布. 1.Flink架构及特性分析 Flink是个相当早的项目,开始于2008年,但只在最近才得到注意.Flink是原生的流处理系统,提供high level的API.Flink也提 ...

  8. List集合去重方式及效率对比

    List集合相信大家在开发过程中几乎都会用到.有时候难免会遇到集合里的数据是重复的,需要进行去除.然而,去重方式有好几种方式,你用的是哪种方式呢?去重方式效率是否是最高效.最优的呢?今天就给大家讲解一 ...

  9. 第8.17节 Python __repr__方法和__str__方法、内置函数repr和str的异同点对比剖析

    一. 引言 记得刚开始学习Python学习字符串相关内容的时候,查了很多资料,也做了些测试,对repr和str这两个函数的返回值老猿一直没有真正理解,因为测试发现这两个函数基本上输出时一样的.到现在老 ...

随机推荐

  1. Bzoj2152/洛谷P2634 聪聪可可(点分治)

    题面 Bzoj 洛谷 题解 点分治套路走一波,考虑\(calc\)函数怎么写,存一下每条路径在\(\%3\)意义下的路径总数,假设为\(tot[i]\)即\(\equiv i(mod\ 3)\),这时 ...

  2. android studio 继续汉化 编译项目 菜单

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha Edit Flavors...

  3. Spring整合Mybatis案例,献给初学的朋友

    今天我们来学习Spring整合Mybatis. 开发环境:Ide:MyEclipse 2017 CI JDK:1.8 首先我们简单的认识下这两个框架 1.Mybatis MyBatis是一个支持普通S ...

  4. hdu 3435 图回路分割

    将一个无向图分成许多回路,回路点交集为空,点幷集为V.幷最小化回路边权和. #include <cstdio> #include <cstring> #include < ...

  5. php -- php读取sqlserver中的datetime出现的格式问题

    php连接sqlserver2005时,读取出来的数据是01 15 2014 12:00AM, 也就是说日期的格式是MM DD YY hh:mmAM 那如何把它转变成24小时制,且显示的格式为YY-M ...

  6. 稀疏编码直方图----一种超越HOG的轮廓特征

    该论文是一篇来自CMU 的CVPR2013文章,提出了一种基于稀疏编码的轮廓特征,简称HSC(Histogram of Sparse Code),并在目标检测中全面超越了HOG(Histogram o ...

  7. input输入框限制输入英文,数字,汉字

    <h1>js验证输入框内容</h1><br /><br /> 只能输入英文<input type="text" onkeyup ...

  8. ExtJs ComboBox 在IE 下 自动完成功能无效的解决方案

    使用 ComboBox 来作为自动完成的组件,就像google suggestion ,可是在IE下怎么也无法输入字符,是处于不可编辑状态,而firefox和chrome都正常显示.我在2个ExtJs ...

  9. hadoop招聘需求每天都在添加,短短半个月时间,需求量差点儿翻了一番,这是大数据要爆发的节奏么?

    近期常常关注企业hadoop招聘需求的动态变化,多说无益,直接上几张百度的截图: 4月20日: 4月22日: 4月27日: 5月8日:

  10. Si4455 低电流 Sub-GHz收发器

    Silicon Labs 的 Si4455 是易于使用的低电流 Sub-GHz EZRadio® 收发器.覆盖所有主要波段,结合了即插即用的简单性和需要处理各种不同应用的灵活性.紧凑的 3 mm x ...