2008-09-15 101 views
2

我想要獲得一些準確的運行時比較PHP和Python(以及可能包含的任何其他語言)的比較。在腳本中計時並不是我的問題,但腳本中的計時並未考慮從請求運行腳本到輸出的所有時間。比較運行時間

1)它真的值得考慮這些事情嗎?

2)假設值得考慮,我該怎麼做?

我使用的是Mac,所以我就可以訪問的Linux命令,我不怕編譯/創建一個命令來幫助我,我只是不知道怎麼寫這樣的命令。

回答

4

如果你的想法是比較語言,我會說他們之外的任何東西都不相關用於比較目的。

儘管如此,您可以使用time命令來測量所有內容,並且可以將它與腳本中的時間進行比較。

像這樣:

$ time script.php 
HI! 

real 0m3.218s 
user 0m0.080s 
sys  0m0.064s 

它會給你的時鐘時間,用戶時間(PHP解釋器)和SYS時間(OS時間)

如果你正在考慮網上,那麼它得到了很多困難因爲如果你使用的是WSGI v/s mod_php,那麼你會混淆網絡服務器開銷,並且這並不總是很容易比較。然後,您必須將探針連接到鏈的可編程部分

1
  1. 如果您正在優化代碼,則需要考慮速度。您通常應該知道爲什麼要優化代碼(例如:現有代碼庫中的特定任務耗時過長,而不是「我聽說PHP比Python慢​​」)。如果你沒有實際計劃切換語言,那麼值得考慮的是而不是。僅僅因爲一個小模塊稍快一點,並不意味着用另一種語言重寫你的應用是個好主意。除了速度之外,還有其他許多因素可供選擇。

  2. 你當然是基準。多次運行這兩個代碼庫並比較時間。如果兩個腳本都可以從shell執行,或者使用各種語言的相應基準測試功能,則可以使用time命令;自然,後一種情況在很大程度上取決於實際的語言。

1

好了,你可以使用「時間」命令的幫助:

[email protected]:~$ time echo "hello world" 
hello world 

real 0m0.000s 
user 0m0.000s 
sys 0m0.000s 
[email protected]:~$ 

,這將得到解決時序環境之外。

至於你是否需要真正計算額外的工作......完全取決於你在做什麼。我認爲這是某種類型的Web應用程序,因此它取決於您使用的框架實際上是如何工作的......是否緩存某種編譯(或解析)的腳本版本?如果是這樣,那麼啓動時間將是完全不相關的(因爲第一次啓動將是啓動時間存在的唯一時間)。

此外,請確保在循環中運行測試,以便您可以優先考慮第一次運行(並且如果需要,請在報告的第一次運行時包括費用)。我已經在Java中進行了一些測試,並且由於JIT執行其工作(並且在PHP,Python和任何其他語言中可能存在相同的命中),第一次運行總是最慢。