Luaリファレンス 要注意点 ~バッファー~

高速なバッファコピー、低速なバッファコピー

  • 例えば、
        local buff = ""
        for line in io.lines() do
            buff = buff .. line .. "\n"
        end
    
    これは非常に低速。
    2項演算子".."によるコピーも何度も行われる上、だんだんコピーされるバッファサイズが大きくなってゆく。

    そこで、
        local t = {}
        for line in io.lines() do
            t[#t + 1] = line -- 高速
        end
        t[#t+1] = "" -- 最後の最後に改行をすばやくconcatで付けるため、ダミーの空文字を最後に付け足す。
        s = table.concat(t, "\n") -- こちらも高速
    
    というようにすれば、高速に処理できる。

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-08-19 (火) 01:31:42 (1374d)