1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        oLuaLua 優(yōu)化工具

        聯(lián)合創(chuàng)作 · 2023-09-27 23:05

        oLua 是一個聊勝于無的Lua優(yōu)化工具。

        優(yōu)化點

        • 優(yōu)化Lua的table訪問
        • 優(yōu)化Lua的table構(gòu)造

        優(yōu)化Lua的table訪問

        例如如下代碼:

        a.b = {}
        if a.c then
            a.b.data1 = "1"
            a.b.data2 = "2"
            a.b.data3 = "3"
        end

        a.b是一個table,每次訪問a.b都會觸發(fā)一次table的訪問,這樣會影響性能,所以可以優(yōu)化為:

        a.b = {}
        local a_b = a.b
        if a.c then
            a_b.data1 = "1"
            a_b.data2 = "2"
            a_b.data3 = "3"
        end

        注意:這里做了一個假設(shè)推斷,當對一個a.b賦值構(gòu)造的table后,就不會再更改a.b為其他table或者其他類型。只針對符合這種假設(shè)的推斷的代碼才能優(yōu)化。

        優(yōu)化Lua的table構(gòu)造

        例如如下代碼:

        local a = { a = 1, 2 }
        a.b = 1
        a["c"] = 2
        a[3] = 3
        a.d = { e = 4 }
        a.d.f = 5

        每次往a中添加元素可能會觸發(fā)table的擴容,所以可以優(yōu)化為:

        local a = {['a']=1, 2, ['b']=1, ['c']=2, [3]=3, ['d']={['e']=4,['f']=5}}

        使用

        編譯:

        go mod tidy
        go build

        運行,優(yōu)化單個文件的table訪問:

        ./oLua -input input/table_access.lua -output output/table_access.lua -opt_table_access

        運行,優(yōu)化單個文件的table構(gòu)造:

        ./oLua -input input/table_construct.lua -output output/table_construct.lua -opt_table_construct

        也可以優(yōu)化目錄下的所有文件,原地替換:

        ./oLua -inputpath input_dir -opt_table_access -opt_table_construct

        效果

        使用Lua執(zhí)行input、output目錄下的lua文件,看運行所需的時間。

          優(yōu)化前 優(yōu)化后
        table訪問 19.07 11.0
        table構(gòu)造 3.3 1.9

         

        瀏覽 21
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        編輯 分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        編輯 分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            在线播放神尾舞视频 | 天堂在线观看av 99re6久热只有精品6在线直播 | 外国三级黄色片 | 亚洲AV无码电影 | 波多野毛片| 国产和美国黄色毛片 | 日韩一级在线免费观看 | 午夜精品久久久久久久久久久久 | 动漫做床爱大尺度电影 | 囯产精品久久久久久久久久乐趣播 |