2011-02-06 149 views
48

編輯:不幸的是LuaJIT被拿出來的比較下面的鏈接。爲什麼LuaJIT這麼好?

這種編程語言的comparison表明LuaJIT比通常的Lua實現具有十倍以上的改進。 爲什麼變化如此之大?是否有一些關於Lua的具體內容,使它從JIT編譯中受益匪淺? Python是動態類型的,並且也被編譯爲字節碼,所以爲什麼PyPy(我相信現在有JIT)在性能上顯示出如此大的跳躍?

+33

簡單的答案:邁克保羅是一位神:) – Necrolis 2011-02-06 10:10:19

回答

56

邁克·鮑爾一直在談論這幾個地方:

與每一個高性能的系統,最終的答案歸結爲兩件事:算法和工程。 LuaJIT使用先進的編譯技術,並且它還有一個非常精細的工程實現。例如,當花哨的編譯技術無法處理一段代碼時,LuaJIT會回退到用x86彙編編寫的非常快速的解釋器。因爲不僅LuaJIT本身設計良好,而且Lua語言本身具有比Python和JavaScript更簡單和更連貫的設計,因此LuaJIT在工程方面獲得了雙重優勢。這使得實現更容易(略微)提供一致的良好性能。

+20

LuaJIT是一個非常好的算法和卓越的工程的絕佳例子。這個(或這個)是否像營銷文本一樣是無關緊要的。組裝中的手工編碼解釋器循環顯着快於解釋器的C版本,這些都是很好的工程實例。別名分析,商店下沉,負載轉發,nan-tagging,寄存器分配和高效跟蹤組合/退出都是優秀算法(和工程)的例子。 – Eloff 2013-12-31 20:20:50