2013-03-13 82 views
1

我想知道,我可以從rpm(或使用yum)安裝的Python解釋程序和從源代碼編譯的Python解釋程序之間有任何記錄的性能差異先驗設置標誌進行編輯)。從源代碼編譯的python與python之間的性能差異

我使用Redhat 6.3機器作爲Django/Apache/Mod_WSGI生產服務器。我已經正確編譯了不同設置和不同順序的所有內容。不過,我通常在這樣的機器上保留build-dev的依賴關係。對於一些與自我相關的(或多或少是實際的)原因,我想使用Python-2.7.3。默認情況下,Redhat附帶Python-2.6.6。我想我可以用它,但它會以某種方式傷害我(我將不得不放棄並找到幾個圖書館和我的自我的替代品)。

但是,除了我的自我和依賴關係外,我想知道Django服務器的性能會有什麼影響。

回答

4

如果使用與用於編譯RPM版本完全相同的標誌進行編譯,則會得到完全一樣快的二進制文件。您可以通過查看RPM的spec文件來獲得這些標誌。

但是,您有時可以比預構建版本更好地。例如,您可以讓編譯器針對您的特定CPU進行優化,而不是針對「通用386兼容」(或者RPM爲其優化的任何內容)。當然,如果你不知道自己在做什麼(或者故意這樣做),也總是可以構建比預先構建版本慢的東西。

同時,2.7.3比2.6.6更快。他們中的大多數通常不會影響你,但如果他們這樣做,他們可能會是一個巨大的勝利。

最後,對於絕大多數Python代碼,Python解釋器本身的速度與您的整體性能或可伸縮性無關。 (當它是時,你可能想嘗試PyPy,Jython或IronPython來替換CPython。)對於WSGI服務尤其如此。如果你沒有做任何緩慢的事情,Apache可能會成爲瓶頸。如果你做任何事情都很慢,那麼它可能是I/O綁定的東西,遠遠超出Python的控制範圍(比如讀取文件)。

最終,您可以知道您獲得的收益的唯一途徑是通過兩種方式進行嘗試和進行性能測試。但如果你只是想要一個經驗法則,我會說預計會有0%的收益,並且如果你幸運的話會感到驚喜。

+0

IronPython適用於windows。 – LtWorf 2013-03-13 21:47:17

+0

@LtWorf:不,它不適用於任何.NET運行時,包括Mono。我現在在Linux機器和Mac上運行它。 (在我的linux系統上,我只是'apt-get install ironpython'來從主要的回購庫中獲得它!) – abarnert 2013-03-13 21:47:33

+0

你爲什麼要這樣做?除了證明我的意思。 – LtWorf 2013-03-13 21:48:12