2008-12-13 80 views
8

我正在考慮將Smarty作爲我的web應用程序模板解決方案,現在我正在關注它對普通PHP的性能。Smarty基準,任何人?

Smarty網站說它應該是相同的,但是,我無法找到任何人做真正的基準測試來證明這個說法是對還是錯。

有沒有人做過一些Smarty vs普通PHP的基準測試?或者也許在這些測試中遇到一些資源?

感謝

+0

我可能是錯的,但Smarty是'Plain Php',它只是一個用php編寫的模板引擎。您似乎不太可能編寫比smarty更快的模板引擎 – andrew 2011-02-07 22:04:58

回答

14

因爲最終,Smarty將模板文件編譯並緩存到原生PHP代碼,所以確實沒有理論上的性能差異。 當然,由於每次需要解釋的Smarty代碼塊總會有一些性能損失。

3

剛剛發現this很簡單的基準 - propably不是很顯著。

+1

該域名不再在線,但這裏有一個很好的替代品 http://cedric.emisfr.info/en/2010/03/25/ smarty-2-6-3-0beta-and-dwoo-performance/ – TravisO 2010-07-01 19:31:34

1

Smarty會在第一次使用它時爲其所有模板文件生成PHP代碼,前提是您已正確設置它,並在可能時使用它們,而不是再次解析模板。

我用了它一段時間,它速度不夠快,但最終我換了普通的PHP文件,因爲它有點限制(太多的PHP4-isms)。

1

Smarty的本身是相當大的圖書館......如果你要使用Smarty的,我建議你使用APC緩存編譯版本。它會抵消的Smarty庫的相當大的大小...

1

這取決於你如何使用Smarty的,因爲你的頁面的流量可以變化

經典純PHP流量:

  • 輸出
  • 句柄$ _R EQUEST數據
  • 輸出
  • 處理數據庫查詢
  • 輸出
  • 處理$ _REQUEST數據
  • 輸出
  • ...

經典Smarty的流程:

  • 手柄所有$ _REQUEST數據
  • 處理所有的數據庫查詢
  • 輸出所有

如果純PHP了1.0秒,這個頁面的Smarty的頁面也需要1.0秒。但是如果我們假設所有數據庫和$ _request handeling需要0.7秒。普通的PHP在0.7秒後開始輸出Smarty版本時直接開始輸出。爲此,瀏覽器可以更快地開始下載樣式表和圖像。 沒有輸出也意味着「停止」按鈕不起作用。

但是,在Smarty中,您可以從模板中調用函數和方法。 將緩慢部分延遲到需要數據的位置。

4

您可能還需要採取在一個新的模板庫,類似於Smarty的根據我自己的經驗和非正式的基準稱爲Dwoo

0

,Smarty的本身並不造成任何重大的性能下降。但是,當你開始編寫自定義插件時,情況會變得很糟糕。

Smarty模板被編譯爲&緩存爲PHP,但自定義插件總是在運行時加載並執行,並且始終比在普通的舊PHP文件中運行相同的代碼要慢。使用自定義的字符串格式化插件,您不會注意到這一點,但在插件中執行數據庫查詢時,您一定會看到它。

總的來說,我強烈推薦Smarty。從PHP中取出顯示器讓我們的代碼更具可讀性和可維護性。你只需要確保你對插入的內容保持謹慎。

2

這裏的另一個模板解決方案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

到目前爲止,我還沒有遇到任何出現阻塞

2

這裏的模板引擎的基準測試PHP VS Smarty的,還有更多的模板引擎http://www.raintpl.com/PHP-Template-Engines-Speed-Test/

  • 對於賦值Twig是更快的,它將html模板編譯成一個類,所以它的執行速度比PHP include還快 !恕我直言,很重(很多文件)和複雜,但速度非常快!

  • 對於循環更快的PHP包括,很快就有雨這是很容易,小(1文件)和快。

+0

嘗試成爲SO的寶貴成員。你的回答歷史看起來像公然的廣告。 – 2011-04-08 09:15:06