国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - smarty模板嵌套之include與fetch性能測試

smarty模板嵌套之include與fetch性能測試

2019-11-13 11:46php教程網(wǎng) PHP教程

使用模板時難免要碰到模板嵌套的時候,大家都知道有兩種方法可以實(shí)現(xiàn),以下是個人早期的一些使用感受。

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

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

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

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

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

  不足:

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

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

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

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

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

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

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

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

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

    4、擴(kuò)展性較好 

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

  不足:

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

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

    3、......

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

單個子模板測試:

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

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

ab -n 10000

test1.php

test2.php

test3.php

test2/test1

test3/test1

1

5.178

5.442

6.097

1.050984936

1.177481653

2

5.253

5.972

6.027

1.136874167

1.147344375

3

5.223

6.039

5.987

1.156232051

1.146276087

4

5.533

5.997

6.02

1.083860474

1.08801735

5

5.557

6.308

6.03

1.135144862

1.085117869

6

5.248

6.002

5.998

1.14367378

1.142911585

7

5.211

5.933

6.003

1.138553061

1.151986183

8

5.303

6.031

6.048

1.137280784

1.140486517

9

5.213

5.923

6.033

1.136197967

1.15729906

總計(jì)

47.719

53.647

54.243

1.124227247

1.136717031

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

ab -n 100000

test1.php

test2.php

test3.php

test2/test1

test3/test1

1

5.723

7.874

8.55

1.375851826

1.493971693

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

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

多個子模板測試:

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

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

ab -n 50000

test1.php

test2.php

test3.php

test2/test1

test3/test1

1

5.68

6.054

6.028

1.06584507

1.061267606

 

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩精品日韩激情日韩综合 | 国产一区www| 91精品国产综合久久久蜜臀粉嫩 | 国产精品久久久久久久久久妞妞 | 免费成人一级片 | 欧美午夜一区二区三区免费大片 | 日韩精品专区在线影院重磅 | 日韩欧美一区二区在线视频 | 亚洲国产成人av好男人在线观看 | 伊人网电影 | 久久中文字幕电影 | 日本在线不卡视频 | 亚洲视频在线观看免费 | 激情国产视频 | 国产一区二区免费 | 成人午夜毛片 | 精品影院 | 久久亚洲精品中文字幕 | 91 在线观看 | 欧美99热 | 91精品国产综合久久福利软件 | 日韩精品成人 | 九九综合九九 | 亚洲精品久久久久久国产精华液 | 91免费黄色片 | 久久久高清 | 91黄色片视频 | 亚洲欧美综合乱码精品成人网 | 综合一区 | 中文字幕第5页 | 国产一区二区三区在线免费观看 | 成人欧美一区二区三区色青冈 | 黄色在线观看网站 | 亚洲自拍偷拍精品视频 | 亚洲在线一区二区 | 国内自拍视频在线观看 | 日韩国产一区二区三区 | 欧美精品一区二区三区蜜桃视频 | 在线欧美一区 | 欧美第一区 | 欧美精品一二三 |