Python到底有多慢?


其實如果是性能要求不高的應用的話,快慢表現得不會太明顯。舉個例子吧,原來大學期間畢設需要對多點之間路徑選擇順序進行優化,查閱多方資料後決定使用蟻群演算法選出最優路徑。尷尬點就在這個蟻群演算法里發生了。

首先用的10個坐標點模擬城市的位置,因為平時使用Python比較多一點也較為熟悉,所以首當其衝的選擇了Python作為實現蟻群演算法的編程語言,但是在第一次運行時差點就等睡著了。猜猜有多久,6分鐘多,這就是效率(運行速度)的可怕之處。總不能在畢設答辯里讓答辯老師等6分鐘來選個最優路徑,恐怕是要被掛呀。所以後來蟻群演算法這一塊使用c語言進行了優化,運算出結果不到1分鐘。沒有對比就沒有傷害,經歷了這件事後,我深深的體會到了Python執行效率的可怕之處。

但是作為一門簡潔易懂的解釋性語言,拋去了指針等複雜的內容,使開發者將更多的注意力集中於解決問題的方法或思路上,而不是編程語言的技術本身上。所以在這些優點的支撐下也可以原諒它的執行效率。

有可能有人有疑問為什麼C語言、Java語言的執行效率都比Python高呢,其實這和一門語言的底層代碼有關係。C語言是對彙編語言的二次開發,而Java大部分是對c和c++的二次開發,然而我們的Python則可以分為兩種情況,一種是cpython,另一種是jpython分別是對c和Java的二次開發,所以效率低於這兩種語言不言而喻的。原來看到消息稱,為解決Python的效率問題,官方打算重新開發Python的底層代碼,最近也沒有看到相關消息,畢竟這個工作量非常巨大。


如果交互操作多,系統的實時性要求高,對系統執行效率要求高,圖形圖像繪製複雜的話,建議用C++。但如果是實驗性程序,需要用很多高級的科學計算庫,程序處理實時性不高的話,建議用Python。Python的精髓是有強大而其它語言不可比擬的科學計算程序包。諸如機器學習、統計等程序包。c++的精髓是程序執行效率高,程序靈活,人機交互設計,資料庫操作,複雜圖形繪製處理方面都很適用。Java的精髓是web設計,手機App,跨平台的伺服器處理。一句話,用什麼語言看需求而定。


哈,python總是被人在意的是性能和線程問題。

說實在的,只有你把代碼寫好了,才有對比性能的要求。還有主要得看業務,一個小說網站需要的性能是python決定的嗎?根本就是伺服器和帶寬來決定的。


推薦閱讀:

如何从拉勾网往里面来看互联网企业里面的数据挖掘现状如何?
python要學到一個什麼樣的程度能找到個一般的工作?
實際應用中python編寫的程序大部分都是無界面的嗎?
Python學到什麼樣子可以去找工作?
Python,Lua 哪個適合做繪圖軟體的插件腳本語言?

TAG:Python | Java | 編程語言 | 軟體 | 科技 |