• <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運行環(huán)境下的Lua方案

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

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

            Lua.js采用一個不同的方案,它將lua代碼轉(zhuǎn)變?yōu)橐粋€AST樹,經(jīng)過一系列的轉(zhuǎn)換函數(shù),最后產(chǎn)出一個合乎js標(biāo)準(zhǔn)的AST樹,隨后生成一個合法的js代碼。因此轉(zhuǎn)換后直接執(zhí)行的代碼,比VM on VM要快2-5倍,高效的執(zhí)行速度有助于讓你的應(yīng)用或游戲展現(xiàn)流暢的極致體驗。

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

            盡管當(dāng)前l(fā)ua.js還有一些功能沒有實現(xiàn)(如metatable、Lua標(biāo)準(zhǔn)庫等),但可以預(yù)見全部實現(xiàn)后的尺寸也不會有大幅的增長,基本上不會超過30K/12K。

            再談?wù)撔阅埽@里使用了lua.vm.js官方的幾個benchmark代碼(稍做修改使得可以在當(dāng)前版本的lua中運行)(lua.js和lua.vm.js均在chrome下運行),結(jié)果如下:

            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

            在當(dāng)前版本中,GC僅僅比lua.vm.js略快,這是因為現(xiàn)在lua.js對于table模擬還處于較為原型的階段,沒有經(jīng)過充足的優(yōu)化。但即使這樣也比lua.vm.js更快
            而在數(shù)值計算上,性能遠(yuǎn)超lua.vm.js,逼近官方lua,這同樣是在lua.js還沒有經(jīng)過充足優(yōu)化的前提下。經(jīng)過優(yōu)化,完全有超過官方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尚處于不完善狀態(tài),如果你決定嘗試使用,務(wù)必關(guān)注本項目的更新,及時替換更新的版本!

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

            評論

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

            http://luajs.org

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

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

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

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

            很酷!持續(xù)關(guān)注1  回復(fù)  更多評論   


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導(dǎo)航

            統(tǒng)計

            常用鏈接

            留言簿(3)

            隨筆檔案

            文章檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久亚洲国产精品一区二区| 久久久久久亚洲精品不卡| 一本色道久久综合亚洲精品| 久久亚洲国产成人影院| 久久精品国产久精国产| 国产成人综合久久精品尤物| 亚洲欧美成人久久综合中文网| 亚洲色婷婷综合久久| 久久精品九九亚洲精品天堂| 免费精品国产日韩热久久| 久久99精品久久只有精品| 久久综合五月丁香久久激情| 久久偷看各类wc女厕嘘嘘| 久久夜色撩人精品国产小说| MM131亚洲国产美女久久| 亚洲欧美成人久久综合中文网 | 久久强奷乱码老熟女网站| 久久久久亚洲AV无码网站| 无码8090精品久久一区| 久久国产精品-久久精品| 77777亚洲午夜久久多喷| 久久国产综合精品五月天| 久久国产乱子精品免费女| 久久午夜无码鲁丝片秋霞| 久久精品亚洲精品国产欧美| 97久久香蕉国产线看观看| 无码国内精品久久综合88| 香蕉99久久国产综合精品宅男自 | 99久久国产免费福利| 久久青青草原精品国产| 国内精品人妻无码久久久影院导航| 久久青青草原精品国产不卡| 国产午夜福利精品久久| 久久er热视频在这里精品| 1000部精品久久久久久久久| 久久国产乱子伦免费精品| 久久精品国产亚洲AV无码偷窥| 五月丁香综合激情六月久久| 亚洲午夜久久久久妓女影院 | 亚洲七七久久精品中文国产| 久久久久这里只有精品|