我正在考慮將Smarty作爲我的web應用程序模板解決方案,現在我正在關注它對普通PHP的性能。Smarty基準,任何人?
Smarty網站說它應該是相同的,但是,我無法找到任何人做真正的基準測試來證明這個說法是對還是錯。
有沒有人做過一些Smarty vs普通PHP的基準測試?或者也許在這些測試中遇到一些資源?
感謝
我正在考慮將Smarty作爲我的web應用程序模板解決方案,現在我正在關注它對普通PHP的性能。Smarty基準,任何人?
Smarty網站說它應該是相同的,但是,我無法找到任何人做真正的基準測試來證明這個說法是對還是錯。
有沒有人做過一些Smarty vs普通PHP的基準測試?或者也許在這些測試中遇到一些資源?
感謝
因爲最終,Smarty將模板文件編譯並緩存到原生PHP代碼,所以確實沒有理論上的性能差異。 當然,由於每次需要解釋的Smarty代碼塊總會有一些性能損失。
Smarty會在第一次使用它時爲其所有模板文件生成PHP代碼,前提是您已正確設置它,並在可能時使用它們,而不是再次解析模板。
我用了它一段時間,它速度不夠快,但最終我換了普通的PHP文件,因爲它有點限制(太多的PHP4-isms)。
Smarty的本身是相當大的圖書館......如果你要使用Smarty的,我建議你使用APC緩存編譯版本。它會抵消的Smarty庫的相當大的大小...
這取決於你如何使用Smarty的,因爲你的頁面的流量可以變化
經典純PHP流量:
經典Smarty的流程:
如果純PHP了1.0秒,這個頁面的Smarty的頁面也需要1.0秒。但是如果我們假設所有數據庫和$ _request handeling需要0.7秒。普通的PHP在0.7秒後開始輸出Smarty版本時直接開始輸出。爲此,瀏覽器可以更快地開始下載樣式表和圖像。 沒有輸出也意味着「停止」按鈕不起作用。
但是,在Smarty中,您可以從模板中調用函數和方法。 將緩慢部分延遲到需要數據的位置。
有a drop in replacement for Smarty called Template Lite這是關於庫文件大小更輕量級。也就是說,我已經在一些極高負載的情況下使用了原來的Smarty,而無需在此庫中進行交換。
您可能還需要採取在一個新的模板庫,類似於Smarty的根據我自己的經驗和非正式的基準稱爲Dwoo
,Smarty的本身並不造成任何重大的性能下降。但是,當你開始編寫自定義插件時,情況會變得很糟糕。
Smarty模板被編譯爲&緩存爲PHP,但自定義插件總是在運行時加載並執行,並且始終比在普通的舊PHP文件中運行相同的代碼要慢。使用自定義的字符串格式化插件,您不會注意到這一點,但在插件中執行數據庫查詢時,您一定會看到它。
總的來說,我強烈推薦Smarty。從PHP中取出顯示器讓我們的代碼更具可讀性和可維護性。你只需要確保你對插入的內容保持謹慎。
這裏的另一個模板解決方案XSLT這裏是我的基準我轉換的頁面之一(它的一個簡單的頁面):
// with smarty (baseline)
0.014 seconds
// with xsl/xslt-clientside
0.008 seconds
42% decrease in server stress
// with xsl/xslt-serverside
// this process would only be done if the users browser doesn't support client-side XSLT
0.016 seconds
14% increase in server stress
它並不適合所有人,但是如果性能是您的主要關注:)
最重要的是,您允許客戶端緩存您的模板。
這裏有我在做什麼(這是我的網站之一)的一個例子:http://pixao.com
,這裏是較大規模的網站是另一個例子:http://worldofwarcraft.com
到目前爲止,我還沒有遇到任何出現阻塞
這裏的模板引擎的基準測試PHP VS Smarty的,還有更多的模板引擎http://www.raintpl.com/PHP-Template-Engines-Speed-Test/
對於賦值Twig是更快的,它將html模板編譯成一個類,所以它的執行速度比PHP include還快 !恕我直言,很重(很多文件)和複雜,但速度非常快!
對於循環更快的PHP包括,很快就有雨這是很容易,小(1文件)和快。
嘗試成爲SO的寶貴成員。你的回答歷史看起來像公然的廣告。 – 2011-04-08 09:15:06
我可能是錯的,但Smarty是'Plain Php',它只是一個用php編寫的模板引擎。您似乎不太可能編寫比smarty更快的模板引擎 – andrew 2011-02-07 22:04:58