zoukankan      html  css  js  c++  java
  • ejs和swig对比问题之二

    上一次用浏览器里面简单的进行了测试,得到的数据是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("--------------开始测试--------------
    
    ");
    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毫秒
    ",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毫秒
    ",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对比问题之二

  • 相关阅读:
    hibernate对应的annocation版本
    Struts 2 OGNL
    Struts2的Stack Context和ValueStack
    Struts2中的OGNL详解
    struts2中根对象以及ognl .
    在Struts 2中实现IoC
    Struts2的属性驱动与模型驱动的区别
    Struts2的模型驱动
    Java中线程的锁和数据库中的事务隔离级别
    为什么socket编程要用到多线程
  • 原文地址:https://www.cnblogs.com/mnight/p/4228852.html
Copyright © 2011-2022 走看看