騙人的,python是字元文字格式,直接用記事本寫程式碼,都不用編譯,改個字尾名就可以執行。java是位元組碼,需要編譯器。文字和位元組碼在執行時的區別就是文字格式需要直譯器對識別符號長度、換行符之類的進行比對,而位元組碼不需要考慮這些格式。文字格式在進行解釋時由於識別符號的長度不等,查詢程式碼的速度會差很多,而位元組碼則可以直接用一個函式指標陣列來作為直譯器的核心,查詢速度更快。
雖然如此,python在某些時候可能會比java還快。就像是我之前有試過用Matlab和C++做矩陣運算,發現matlab比C++快了好多倍。這是因為matlab中一條指令可以被解釋成一個很複雜的演算法,而我又無法對C++做出很好的最佳化。matlab的核心也是C++程式,做矩陣運算反而比直接使用C++還快。當然,我沒有拿matlab和openCV作比較。如果當時使用openCV的庫函式來做矩陣運算,結果又會是天差地別。openCV的效能之高,可以靠畫線和圖塊用來做動畫,這才是真正發揮出了C++的效能。
可以說對於標準演算法和菜雞程式設計師,matlab可能會比C++還快。那麼對於這些標準演算法,python比java快,java比C++快,C++比C快就不是什麼很奇怪的事情了。事實就是我自己在做一些標準演算法的時候,C反而是最慢的,無論執行速度還是開發速度C都是倒數。
但是對於一些不是很標準的程式,效能的比較就很公正了。就像坐火箭朝反方向繞地球一圈和步行一百米的區別,由於指令碼語言的封裝程度太高,對於一些細節的操作就會力不從心。經過專家最佳化過的python可能不如菜鳥寫的java,同樣,對於這樣的程式C語言的優勢是壓倒性的。
騙人的,python是字元文字格式,直接用記事本寫程式碼,都不用編譯,改個字尾名就可以執行。java是位元組碼,需要編譯器。文字和位元組碼在執行時的區別就是文字格式需要直譯器對識別符號長度、換行符之類的進行比對,而位元組碼不需要考慮這些格式。文字格式在進行解釋時由於識別符號的長度不等,查詢程式碼的速度會差很多,而位元組碼則可以直接用一個函式指標陣列來作為直譯器的核心,查詢速度更快。
雖然如此,python在某些時候可能會比java還快。就像是我之前有試過用Matlab和C++做矩陣運算,發現matlab比C++快了好多倍。這是因為matlab中一條指令可以被解釋成一個很複雜的演算法,而我又無法對C++做出很好的最佳化。matlab的核心也是C++程式,做矩陣運算反而比直接使用C++還快。當然,我沒有拿matlab和openCV作比較。如果當時使用openCV的庫函式來做矩陣運算,結果又會是天差地別。openCV的效能之高,可以靠畫線和圖塊用來做動畫,這才是真正發揮出了C++的效能。
可以說對於標準演算法和菜雞程式設計師,matlab可能會比C++還快。那麼對於這些標準演算法,python比java快,java比C++快,C++比C快就不是什麼很奇怪的事情了。事實就是我自己在做一些標準演算法的時候,C反而是最慢的,無論執行速度還是開發速度C都是倒數。
但是對於一些不是很標準的程式,效能的比較就很公正了。就像坐火箭朝反方向繞地球一圈和步行一百米的區別,由於指令碼語言的封裝程度太高,對於一些細節的操作就會力不從心。經過專家最佳化過的python可能不如菜鳥寫的java,同樣,對於這樣的程式C語言的優勢是壓倒性的。