為什麼蘋果新語言 Swift 的 RC4 運算效能是 Python 的 220 倍?

來源:互聯網
上載者:User
Swift 是解釋型語言吧,真能做到那麼快嗎,或者210倍只是特殊的某些功能上的速度對比,四則運算應該提升不了這麼多吧?

回複內容:

與提問者的直覺相反,四則運算恰恰是Python(相對於C)最慢的部分。一個整數a+b在Python VM裡要經過大約上百行的C代碼,其中包括bytecode解釋,動態類型帶來的間接調用,對bigint的無縫支援等等。要在四則運算上比Python快上百倍,只需要效能不比C差出數量級就可以。這也是各種JIT最喜歡拿四則運算作示範的原因。

而實際的UI代碼中,使用者邏輯使用的語言,效能其實無關緊要。因為大部分使用者邏輯無非是“當使用者操作A發生時改變UI元素BCD的狀態”、“從伺服器返回結果中提取欄位XYZ並設定到對應的UI元素”等等,膠水代碼而已。平均每執行一行使用者代碼,架構代碼要執行幾百行,這隻要在debugger中step into架構代碼就能瞭解。因此只要架構用高效的語言實現,使用者代碼即使用慢上百倍的Python也無所謂。Benchmark這個東西,如果沒有公布:
1.實際的測試案例
2.各種語言的具體實現

隨便怎麼吹都可以Swift 既然是編譯到機器碼啟動並執行,那就不該和跑在官方解譯器上的 Python 比較。
Python 也能編譯,用的也是 LLVM。Swift 和這樣的 Python 比較才有意義。

包的名字叫 Numba,你在函數上方添一行 decorator,啟動並執行時候就能把這塊函數 JIT 編譯成機器碼。
就題主關心的四則運算來說,舉加法的例子,用了 Numba 的 Python 比 C 都快。
這有什麼奇怪?!主流編程系統中找比CPython慢的一直都很難你好意思拿個編譯語言跟指令碼語言比嗎?洗洗睡吧,當然是特定環境下的特定跑分。pypy 跑斐波那契數列就比 cpython 快到不知道哪裡去了,線上有幾家在用?忽悠果粉無所不用其極啊

這一次真心鄙視了swift編譯出來的是機器碼,python(應該是CPython)編譯出來的是python虛擬機器啟動並執行位元組碼。

那麼在絕大多數情境下,運行效率肯定是存在巨大差異的。但我覺得210倍這個值是在某個特定的特別能顯得swift快的情境下的結論。

其實swift和python的可比性沒有那麼大,應該和golang比才是真的大丈夫是可能的,推薦你瞭解下LLVM這個東西,應該是先編譯為一種中間表達,但是隨後進一步編譯為純機器碼。本質上跟C和ObjC編譯出來的沒區別,都是彙編機器碼,所以效率問題可以忘掉了。
而當你需要即時出結果,就像解釋型指令碼語言那樣時,切換兩遍編譯為一遍,改輸出機器碼為輸出中間表示給解譯器即可。LLVM真的是革命性的東西圖片中的英文,意思是“RC4加密”,這是一種密碼級的偽隨機數產生演算法,主要效能開銷,還真就是四則運算。

由此可見,Python的四則運算有多麼糟糕。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.