python 效率問題?
來源:互聯網
上載者:User
初學python,以前搞過java和cpp。早就知道解釋型的指令碼語言肯定不快。但心存疑惑python和php,js,ruby等類型的語言,單從運行效率上來講哪個更快一些?另外,python也能像java一樣編譯成位元組碼,是不是速度會提升很多?python能編譯成機器碼嗎?
回複內容:
python是慢,但是慢在特定的情境,兩個最主要的: 1,全域執行鎖GIL所以無法用多核 2,所有東西都是對象且內部實現導致計算慢。如果你想寫CPU密集的程式,建議別用py,如果是IO密集的程式,pyhton毫無問題。
PS:
1,除非明確業務情境,否則幹討論效率問題沒意義,實際上,開發的絕大部分時候,效率永遠不是第一位的問題
2,就算效率是問題,那絕大部份時候也不是語言問題
3,就算是語言問題,綜合衡量成本等各方面因素,絕大部份時候換語言也不是最好的選擇"快"和"慢"都是看情境的
Java 也有比 Python 慢的地方, 例如做大矩陣運算沒有 NumPy 效率高, 啟動很慢等Python效率比Java差很多,而且有了HHVM以後,PHP的效率都比Python高了。
所以建議在效能要求比較高的場合不要用Python。
=============== 以下吐槽 ==================
效能要求要多高才算高呢?如果是做網站的話,至少註冊使用者和PV要超過知乎或者豆瓣。
昨天看見一個註冊使用者只有一千多的網站在討論效能問題。先說說位元組碼。python編譯成位元組碼幾乎不會變快。python的執行過程是,先編譯你的代碼到位元組碼,然後虛擬機器載入位元組碼執行。因此提前編譯到位元組碼只能省一點編譯時間,大部分時候這點時間都可以忽略。
就官方實現來說,python效率要比ruby高(php和js不太瞭解),但高的有限。如果真想用python追求效率,可以試試pypy,這個帶jit的實現有些時候速度和c有一拼(當然jit能提速多少還得看應用情境)
另外,對於效能瓶頸不在計算速度的程式來說,python帶來的效能損失還是很小很小的