一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

smarty模板嵌套之include與fetch性能測(cè)試

方法一、使用在父模板中使用{include file="child.tpl"}直接將子模板包含進(jìn)來(lái)

  優(yōu)點(diǎn):

    1、有利于模塊的劃分和模板的重用。

    2、嵌套層次不多的時(shí)候,模板的結(jié)構(gòu)清晰,一眼過(guò)去就知道這個(gè)模板的內(nèi)容和結(jié)構(gòu)。

    3、只需要一個(gè)smarty實(shí)例就能做完所有的事情,減少系統(tǒng)資源的占用。

  不足:

    1、子模板中的變量可能與父模板的變量發(fā)生沖突

    2、多重嵌套的時(shí)候,變量名沖突的幾率增大,為所有的變量賦值的難度也加大。

    3、子模板的可操控性差,例如不能通過(guò)設(shè)置$cache_id, $compile_id,來(lái)得到多個(gè)結(jié)果。

    4、擴(kuò)展性差。如果需要添加新的模板的時(shí)候需要修改模板,同時(shí)還需要修改程序。

方法二、通過(guò)$smarty->fetch()將子模板的數(shù)據(jù)當(dāng)成變量assign到父模板中

  優(yōu)點(diǎn):

    1、同樣有利于模塊的劃分,模板的重用

    2、模板的結(jié)構(gòu)同樣清晰

    3、子模板作為單獨(dú)的對(duì)象,可操控性強(qiáng)

    4、擴(kuò)展性較好 

    5、每個(gè)子模板都是單獨(dú)的對(duì)象,不會(huì)出現(xiàn)變量名沖突的問(wèn)題

  不足:

    1、如果子模板多的時(shí)候,需使用多個(gè)smarty實(shí)例來(lái)實(shí)現(xiàn),php代碼顯得臃腫

    2、占用較多的系統(tǒng)資源

    3、......

在那個(gè)的時(shí)候,出于對(duì)性能的要求,以及在沒有測(cè)試的情況下,想當(dāng)然的認(rèn)為include的性能一定就比f(wàn)etch的性能要高,所有本人使用include這個(gè)方法,結(jié)果隨著系統(tǒng)功能的不斷的增加,感覺到越寫越復(fù)雜,這有很大一部分原因是設(shè)計(jì)的問(wèn)題,但是模板間的嵌套也是問(wèn)題之一,于是回過(guò)頭來(lái)考慮使用fetch這個(gè)方法。在重新做出決定之前對(duì)這個(gè)方法的性能做了測(cè)試,分別對(duì)單個(gè)模板的情況下和多個(gè)模板的情況進(jìn)行測(cè)試

單個(gè)子模板測(cè)試:

有三個(gè)頁(yè)面test1.php,test2.php,test3.php。這三個(gè)頁(yè)面都輸出同樣的內(nèi)容。test1.php的模板沒有嵌套,test2.php的模板使用了一次include,test3.php使用fetch來(lái)實(shí)現(xiàn)子模板的嵌套。使用apache自帶的ab測(cè)試訪問(wèn)各個(gè)頁(yè)面所需要的平均時(shí)間(單位:ms)

第一次測(cè)試時(shí),使用ab -n 10000 對(duì)以上三個(gè)頁(yè)面進(jìn)行10次,每次累計(jì)10000個(gè)訪問(wèn),結(jié)果如下。

ab -n 10000test1.phptest2.phptest3.phptest2/test1test3/test1
15.1785.4426.0971.0509849361.177481653
25.2535.9726.0271.1368741671.147344375
35.2236.0395.9871.1562320511.146276087
45.5335.9976.021.0838604741.08801735
55.5576.3086.031.1351448621.085117869
65.2486.0025.9981.143673781.142911585
75.2115.9336.0031.1385530611.151986183
85.3036.0316.0481.1372807841.140486517
95.2135.9236.0331.1361979671.15729906
總計(jì)47.71953.64754.2431.1242272471.136717031

第二次測(cè)試時(shí),使用ab -n 100000 對(duì)以上三個(gè)頁(yè)面進(jìn)行1次,每次累計(jì)100000個(gè)訪問(wèn),結(jié)果如下。

ab -n 100000test1.phptest2.phptest3.phptest2/test1test3/test1
15.7237.8748.551.3758518261.493971693

第一次測(cè)試的數(shù)據(jù)中,test1和test2的波動(dòng)比較明顯,test3則比較穩(wěn)定,這個(gè)現(xiàn)象讓我感到十分的奇怪。從平均數(shù)據(jù)來(lái)看,測(cè)試結(jié)果還是在預(yù)期之內(nèi)的,test1的性能最好,test2比test1多耗費(fèi)了12.42%的時(shí)間,test3比test1多耗費(fèi)了13.67%的時(shí)間,但是test2和test3之間的差距并不大,僅僅只有1.3%左右的差別。

第二次測(cè)試的結(jié)果,三個(gè)頁(yè)面的執(zhí)行時(shí)間比為1:1.37:1.49,奇怪的是這次的波動(dòng)更大。。。

多個(gè)子模板測(cè)試:

同樣有三個(gè)頁(yè)面test1.php,test2.php,test3.php。這三個(gè)頁(yè)面都輸出同樣的內(nèi)容。test1.php的模板沒有嵌套,test2.php的模板使用了10次include嵌入了10個(gè)子模板,test3.php使用10次fetch嵌入了10個(gè)子模板。使用apache自帶的ab測(cè)試訪問(wèn)各個(gè)頁(yè)面所需要的平均時(shí)間(單位:ms)

因?yàn)闀r(shí)間的關(guān)系我只進(jìn)行了一次ab -n 50000的測(cè)試,數(shù)據(jù)如下

ab -n 50000test1.phptest2.phptest3.phptest2/test1test3/test1
15.686.0546.0281.065845071.061267606

 

雖然測(cè)試的方法和工具可能不是很好,但是通過(guò)這些數(shù)據(jù)的對(duì)比,在實(shí)際的應(yīng)用中到底要采用哪種方法,我想大家應(yīng)該心里有底了吧。

不足和錯(cuò)誤之處還望指出,希望大家能多討論多交流。

php技術(shù)smarty模板嵌套之include與fetch性能測(cè)試,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 五月天综合色 | 一区二区高清在线观看 | 成年网站视频在线观看 | 成人午夜精品网站在线观看 | 国产视频大全 | 五月婷婷六月丁香激情 | 五月激情综合网 | 中文字幕在线视频第一页 | 开心激情综合网 | 91区国产福利在线观看午夜 | 色呦色呦色精品 | 天天爱天天干天天操 | 顶级欧美色妇xxxxx | 日本久草视频 | 国产一区二区三区久久 | 激情图片激情视频激情小说 | 99久久精品免费精品国产 | 精品一二三区 | 一区二区视频在线观看 | 91在线精品老司机免费播放 | 女子十八毛片 | 久久成人激情视频 | 亚洲国产成人综合精品2020 | 玖玖玖视频在线观看视频6 玖玖免费 | www.xxx欧美| 婷婷六月久久综合丁香可观看 | 青青热久麻豆精品视频在线观看 | 91久久综合 | 精品久久久久久综合日本 | 五月伊人婷婷 | 亚洲国产成人99精品激情在线 | 亚洲精品在线影院 | 香蕉网久久 | 久草色播 | 台湾swag在线视频 | 国产精品成人免费综合 | 婷婷激情综合五月天 | 色婷婷.com | 亚洲国产图片 | 久久精品国产91久久麻豆自制 | 大学生一级黄色片 |