• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            天地之靈

            Lua.js,一個Lua2JS編譯器,一個新的JS運行環境下的Lua方案

            眼見為實,耳聽為虛,先上live demo:
            http://luajs.org

            其實現在在js環境中運行lua代碼的方案已經很多了,這些方案大都分為兩類:
            VM on VM:在js環境中移植或重新實現一個Lua VM。典型的代表是lua.vm.js和MoonShineJS。 這種方案的優勢在于完整還原了整個標準lua,但主要缺陷在于,原本通過虛擬機執行的Lua VM效率就不理想,再通過JS運行,效率就更打一層折扣。
            離線處理型:使用離線工具鏈將Lua語言翻譯成JS。如LLVM-Lua 加上javascript backend,還有一個名為lua2js的項目。這個方案的優勢在于能做一些較為深入的優化,缺點主要在于必須離線處理,不能直接在web上執行,或者體積龐大,以至于本身加載都需要較長時間。除此以外,只能離線處理 導致了字符串執行(如dostring等)的不可能實現,還會影響Lua中的package結構。

            Lua.js采用一個不同的方案,它將lua代碼轉變為一個AST樹,經過一系列的轉換函數,最后產出一個合乎js標準的AST樹,隨后生成一個合法的js代碼。因此轉換后直接執行的代碼,比VM on VM要快2-5倍,高效的執行速度有助于讓你的應用或游戲展現流暢的極致體驗。

            另外,壓縮后的Lua.js難以置信的小。這里是當前lua.js和lua.vm.js的對比:
            文件大小 傳輸大小(gz壓縮)
            lua.js 22.7K 8.3K
            lua.vm.js 638K 203K

            盡管當前lua.js還有一些功能沒有實現(如metatable、Lua標準庫等),但可以預見全部實現后的尺寸也不會有大幅的增長,基本上不會超過30K/12K。

            再談論性能,這里使用了lua.vm.js官方的幾個benchmark代碼(稍做修改使得可以在當前版本的lua中運行)(lua.js和lua.vm.js均在chrome下運行),結果如下:

            lua.js lua.vm.js lua 5.2.3 luaJIT 2.0.3 Scale What it measures
            Binary Trees 8.526s 10.198s 4.006s 0.731s seconds (lower numbers are better) GC Performance
            Scrimark 26.98 8.84 30.52 1249.73 MFLOPS (higher numbers are better) numeric computation performance

            在當前版本中,GC僅僅比lua.vm.js略快,這是因為現在lua.js對于table模擬還處于較為原型的階段,沒有經過充足的優化。但即使這樣也比lua.vm.js更快
            而在數值計算上,性能遠超lua.vm.js,逼近官方lua,這同樣是在lua.js還沒有經過充足優化的前提下。經過優化,完全有超過官方Lua的可能性。

            lua.js的benchmark可以在http://luajs.org上找到,lua.vm.js的benchmark在 http://kripken.github.io/lua.vm.js/lua.vm.js.html

            如果你對lua.js感興趣,在這里可以下載獨立的js文件:
            https://github.com/tdzl2003/lua.js
            lua.js尚處于不完善狀態,如果你決定嘗試使用,務必關注本項目的更新,及時替換更新的版本!

            posted on 2014-11-05 20:17 天地之靈 閱讀(10048) 評論(2)  編輯 收藏 引用

            評論

            # re: Lua.js,一個Lua2JS編譯器,一個新的JS運行環境下的Lua方案 2014-11-06 06:36 天地之靈

            http://luajs.org

            2014/11/6更新:
            已修復lua,js在and、or差異上導致的一系列問題。
            已支持metatable。
            已發布部分standard lib。 TODOs中列出的部分除外。歡迎調教。發現BUG歡迎提出issue。

            https://github.com/tdzl2003/lua.js/blob/master/stdlib.lua

            另外stdlib的完整源碼發布在此處
            可作為一個不錯的使用參考  回復  更多評論   

            # re: Lua.js,一個Lua2JS編譯器,一個新的JS運行環境下的Lua方案 2015-02-03 12:25 cool

            很酷!持續關注1  回復  更多評論   

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            導航

            統計

            常用鏈接

            留言簿(3)

            隨筆檔案

            文章檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久亚洲日韩精品一区二区三区| 香蕉久久一区二区不卡无毒影院| 久久久99精品一区二区| 久久国产精品-久久精品| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 精品久久久中文字幕人妻| 超级碰碰碰碰97久久久久| 精品久久久一二三区| 欧洲国产伦久久久久久久| 久久亚洲AV永久无码精品| 久久人人爽人人爽人人片AV麻豆 | 国产aⅴ激情无码久久| 国内精品久久国产| 一本久久a久久精品亚洲| 日本精品一区二区久久久| 欧美伊人久久大香线蕉综合69 | 91久久香蕉国产熟女线看| 久久久精品久久久久特色影视| 手机看片久久高清国产日韩| 久久综合亚洲色HEZYO社区| 无码人妻精品一区二区三区久久久 | 久久久久亚洲AV片无码下载蜜桃| 亚洲国产精品无码久久一线| 91亚洲国产成人久久精品网址| 人妻无码久久精品| 久久水蜜桃亚洲av无码精品麻豆 | 亚洲国产成人久久综合野外| 精品人妻伦九区久久AAA片69| 蜜桃麻豆www久久| 亚洲国产精品综合久久一线 | 久久99国产精品久久99小说| av国内精品久久久久影院| 精品欧美一区二区三区久久久 | 久久伊人精品青青草原高清| 久久久91人妻无码精品蜜桃HD| 久久亚洲私人国产精品vA| 欧美久久久久久精选9999| 亚洲精品国精品久久99热一| 久久精品成人一区二区三区| 人妻精品久久久久中文字幕69 | 国产精品久久久久9999|