• <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,一個(gè)Lua2JS編譯器,一個(gè)新的JS運(yùn)行環(huán)境下的Lua方案

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

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

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

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

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

            再談?wù)撔阅埽@里使用了lua.vm.js官方的幾個(gè)benchmark代碼(稍做修改使得可以在當(dāng)前版本的lua中運(yùn)行)(lua.js和lua.vm.js均在chrome下運(yùn)行),結(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略快,這是因?yàn)楝F(xiàn)在lua.js對(duì)于table模擬還處于較為原型的階段,沒(méi)有經(jīng)過(guò)充足的優(yōu)化。但即使這樣也比lua.vm.js更快
            而在數(shù)值計(jì)算上,性能遠(yuǎn)超lua.vm.js,逼近官方lua,這同樣是在lua.js還沒(méi)有經(jīng)過(guò)充足優(yōu)化的前提下。經(jīng)過(guò)優(yōu)化,完全有超過(guò)官方Lua的可能性。

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

            如果你對(duì)lua.js感興趣,在這里可以下載獨(dú)立的js文件:
            https://github.com/tdzl2003/lua.js
            lua.js尚處于不完善狀態(tài),如果你決定嘗試使用,務(wù)必關(guān)注本項(xiàng)目的更新,及時(shí)替換更新的版本!

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

            評(píng)論

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

            http://luajs.org

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

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

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

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

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


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


            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(3)

            隨筆檔案

            文章檔案

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            丁香五月网久久综合| 久久99精品久久久久久秒播| 国产美女久久精品香蕉69| 久久久久久久尹人综合网亚洲| 国产精品免费久久| 99久久精品免费看国产一区二区三区 | 无码国内精品久久人妻| 99久久精品费精品国产一区二区 | 一级a性色生活片久久无| 蜜臀av性久久久久蜜臀aⅴ| 久久久精品人妻无码专区不卡| 久久香蕉超碰97国产精品| 久久午夜福利电影| 久久精品国产亚洲一区二区| 国产A级毛片久久久精品毛片| 一本色道久久88加勒比—综合| 久久综合综合久久综合| 狠狠色丁香久久婷婷综合_中| 成人午夜精品久久久久久久小说 | 色综合久久天天综线观看| 狠狠干狠狠久久| 久久久久久久久久久久中文字幕 | 成人免费网站久久久| 无码久久精品国产亚洲Av影片| 亚洲精品NV久久久久久久久久 | 亚洲人成网站999久久久综合 | 久久www免费人成看片| 麻豆久久| 久久伊人影视| 日本欧美国产精品第一页久久| 91久久国产视频| 精品久久久久久久中文字幕| 亚洲国产精品久久久久| 伊人久久大香线焦综合四虎| 亚洲国产精品热久久| 国产精品va久久久久久久| 99久久国产亚洲高清观看2024| 成人精品一区二区久久久| 久久久久九国产精品| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 国产一区二区久久久|