Smarty模板嵌套包含取性能测试

方法1。使用{包括文件=孩子。物流}在母模板包含的子模板直接

优势:

1。它有利于模块的划分和模板的重用。

2,当嵌套级别不多时,模板的结构是清晰的,并且模板的内容和结构在过去是已知的。

3、只有一个像模像样的实例可以做所有的事情,减少系统资源占用。

不足:

1。子模板中的变量可能与父模板的变量冲突。

2。当多个嵌套时,变量名冲突的概率增加,分配所有变量的难度也增加。

3、该子模板可操作性差,例如,你不能通过建立cache_id美元得到多个结果,compile_id美元。

4。扩展性差。如果需要添加新模板,需要修改模板,需要修改程序。

方法二,Smarty美元->取(),孩子的模板数据为变量分配给母模板

优势:

1。它也有利于模块的划分和模板的重用。

2。模板的结构也很清楚。

三.的子模板,作为一个单一的对象,可以被操纵。

4。扩展性好

5。每个子模板是一个单独的对象,而且没有变量名冲突问题。

不足:

1、如果子模板是多方面的,你需要使用多个smarty实例来实现它,和PHP代码臃肿。

2,占用更多的系统资源

三,...

当时,由于性能的要求,并在测试情况下的性能,包括想当然的一定比性能取高,我使用包括方法,随着系统功能的结果是越来越多,感觉越写越复杂的,这是很大一部分的原因是设计上的问题,而是一个嵌套的模板也是一个问题,然后转向考虑提取方法的使用。在改造决策,这种方法的性能测试,测试单模板和多模板的情况,分别。

单次模板试验:

有三页test1.php,test2.php,这三页的输出相同的内容test3.php.both,test1.php模板不是嵌套的,和test2.php模板使用包括,和test3.php采用取实现的子模板的嵌套。需与Apache ab测试访问每个页面的平均时间(单位:毫秒)

在第一个测试中,上面的三个页面用AB N 10000进行了10次,每次总共访问10000个页面。结果如下。







ab 10000
test1.php
test2.php
test3.php
test2 /试验
试验/试验


五点一七八
五点四四二
六点零九七
一点零五零九八四九三六
一点一七七四八一六五三


五点二五三
五点九七二
六点零二七
一点一三六八七四一六七
一点一四七三四四三七五


五点二二三
六点零三九
五点九八七
一点一五六二三二零五一
一点一四六二七六零八七


五点五三三
五点九九七
六点零二
一点零八三八六零四七四
一点零八八零一七三五


五点五五七
六点三零八
六点零三
一点一三五一四四八六二
一点零八五一一七八六九


五点二四八
六点零零二
五点九九八
一点一四三六七三七八
一点一四二九一一五八五


五点二一一
五点九三三
六点零零三
一点一三八五五三零六一
一点一五一九八六一八三


五点三零三
六点零三一
六点零四八
一点一三七二八零七八四
一点一四零四八六五一七


五点二一三
五点九二三
六点零三三
一点一三六一九七九六七
一点一五七二九九零六


四十七点719
五十三点647
五十四点243
一点一二四二二七二四七
一点一三六七一七零三一

在第二次测试中,上面的三页用ab n 100000进行了1次,每次累积100000次访问。结果如下。







ab 100000
test1.php
test2.php
test3.php
test2 /试验
试验/试验


五点七二三
七点八七四
八点五五
一点三七五八五一八二六
一点四九三九七一六九三

在第一个试验数据,对test1和test2的波动越明显,且试验是较为稳定的,这使我感到很奇怪。从平均值,试验结果或期望,对test1性能最好,test2 test1和超过12.42%的时间花费超过试验,试验了13.67% test2,test3之间的时间,但差距不是很大,只有大约1.3%的差异。

由于第二测试,三页的执行时间是1:1.37: 1.49,而奇怪的是,这段时间的波动较大。

多个子模板测试:

也有三页,test1.php,test2.php,这三页的输出相同的内容test3.php.both,test1.php模板不是嵌套的,和test2。PHP的模板使用10次,包括10次嵌入模板,并test3.php内嵌10个子模板使用10次取。需要与Apache ab测试访问每个页面的平均时间(单位:毫秒)

由于时间原因,我只有一个AB - N 50000测试,数据如下







ab 50000
test1.php
test2.php
test3.php
test2 /试验
试验/试验


五点六八
六点零五四
六点零二八
一点零六五八四五零七
一点零六一二六七六零六



虽然测试方法和工具可能不是很好,但是通过对这些数据的比较,在实际应用到底采用什么样的方法,我认为我们应该注意。

我们还希望指出我们的缺点和错误,希望我们能够更多地讨论和交流。