<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          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è)推斷,當(dāng)對一個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的擴(kuò)容,所以可以優(yōu)化為:

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

          使用

          編譯:

          go mod tidy
          go build

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

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

          運(yùn)行,優(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ùn)行所需的時間。

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

           

          瀏覽 21
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91视频网站一区二区三区 | 亚洲五十路 | 乱伦引绣视频网站 | 仓井空无码一区 | 亚洲色无码专区观看在线观 |