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 /试验
试验/试验
一
五点六八
六点零五四
六点零二八
一点零六五八四五零七
一点零六一二六七六零六
虽然测试方法和工具可能不是很好,但是通过对这些数据的比较,在实际应用到底采用什么样的方法,我认为我们应该注意。
我们还希望指出我们的缺点和错误,希望我们能够更多地讨论和交流。