免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6613 | 回复: 13
打印 上一主题 下一主题

模板选择,效率评测Template,Text::Xslate,Mojo::Template [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-11-01 11:24 |只看该作者 |正序浏览
我认为认为模板的效率在一般的站点不太会成为速度瓶颈。所以一直用了N年Template-Toolkit。之前还用过Mason和HTML::Template,最后感觉Template-Toolkit更适合我。
直到,发现了小日本的这个http://xslate.org/benchmark.html。为此,去年换了Xslate。再后来是前两周开始用Mojolicious,作者喜欢发明轮子,所以就有了Mojo::Template。(这里顺便一提,作者在解释为什么要重新发明轮子的时候这样说“Because we can make them rounder.”这说法够拽,以后我就和经理这么说。)

我测试了一下Text::Xslate和Mojo::Template,代码如下:
  1. use Mojo::Template;
  2. use Text::Xslate;
  3. use Benchmark qw/timethese cmpthese/;

  4. my $result = timethese(
  5.     10000,
  6.     {
  7.         mojo_template => sub {
  8.             my $mt = Mojo::Template->new;
  9.             $mt->render('Hello World');
  10.         },
  11.         text_xslate => sub {
  12.             my $tx = Text::Xslate->new;
  13.             $tx->render_string('Hello World');
  14.           }
  15.     }
  16. );

  17. cmpthese($result);
复制代码
在一个比较老的双处理器(一共4核)的机器上的到下面的结果:
  1. Benchmark: timing 10000 iterations of mojo_template, text_xslate...
  2. mojo_template:  3 wallclock secs ( 2.48 usr +  0.00 sys =  2.48 CPU) @ 4032.26/s (n=10000)
  3. text_xslate: 21 wallclock secs (20.77 usr +  0.04 sys = 20.81 CPU) @ 480.54/s (n=10000)
  4.                 Rate   text_xslate mojo_template
  5. text_xslate    481/s            --          -88%
  6. mojo_template 4032/s          739%            --
复制代码
后来看到http://xslate.org/benchmark.html提到xslate要在好的服务器上测试才能发挥性能。
好,换一个双处理器24核的新机器上再测,结果:
  1. Benchmark: timing 10000 iterations of mojo_template, text_xslate...
  2. mojo_template:  2 wallclock secs ( 1.84 usr +  0.00 sys =  1.84 CPU) @ 5434.78/s (n=10000)
  3. text_xslate: 13 wallclock secs (13.22 usr +  0.02 sys = 13.24 CPU) @ 755.29/s (n=10000)
  4.                 Rate   text_xslate mojo_template
  5. text_xslate    755/s            --          -86%
  6. mojo_template 5435/s          620%            --
复制代码
看来是时候换模板了。也省得用我用Mojolicious还得通过plugin来支持Xslate并使用TT的语法。只是还得花时间看一下Mojo::Template的语法。
几周前我这里用的从模块到webserver,很大一部分都是日本制造。等我把模板也换了,我这里就再没有日本制造的任何东西了。

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
14 [报告]
发表于 2013-11-05 13:53 |只看该作者
回复 13# py

我也认为这是最大的优点,没学习成本.


   

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
13 [报告]
发表于 2013-11-05 08:52 |只看该作者
回复 10# 兰花仙子

建议在有机会的时候用用这个Mojo::Template,我觉得最大的好处不是效率,而是非常灵活+0学习成本。花20秒的时间看一下他的标签是什么。之后立刻就可以用了,一点不夸张,因为他不像TT,没有自己的语法,这个模板的语法就是perl语法。

对于一个这样的结构:
  1.         $ref = [
  2.             {
  3.                 name => 'apple',
  4.                 color => 'red',
  5.                 number => 8,
  6.             },
  7.             {
  8.                 name => 'pear',
  9.                 color => 'green',
  10.                 number => 6,
  11.             },
  12.             {
  13.                 name => 'peach',
  14.                 color => 'white',
  15.                 number => 10,
  16.             },
  17.         ];
复制代码
模板的写法就是:
  1. % foreach my $item (@$av) {
  2. <ul>
  3. <li>name:<%= $item->{name} %></li>
  4. <li>color:<%= $item->{color} %></li>
  5. <li>number:<%= $item->{number} %></li>
  6. </ul>
  7. % }
复制代码

论坛徽章:
0
12 [报告]
发表于 2013-11-03 15:26 |只看该作者
悲催地继续用着TT

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
11 [报告]
发表于 2013-11-02 14:57 |只看该作者
I think all template skill is just try to write a lisp interpreter.

论坛徽章:
0
10 [报告]
发表于 2013-11-01 23:14 |只看该作者
我一直用Template::Toolkit, 在mod_perl环境下。

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
9 [报告]
发表于 2013-11-01 20:42 |只看该作者
Template-Toolkit -> Mojolicious Mojo::Template?

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
8 [报告]
发表于 2013-11-01 20:05 |只看该作者
回复 7# 104359176


    要, please. thanks!

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
7 [报告]
发表于 2013-11-01 19:10 |只看该作者
要不要做个模板转换程序?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2013-11-01 17:52 |只看该作者
回复 4# zhlong8

我还是不习惯模板里写太多perl的东西,弄的跟PHP/JSP似的。。。前面的东西就弄的很简单,让做前台页面的不会perl的人能很容易看明白就是最好的了。便于分工合作。
   
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP