ネイティブLua(すなわち、Cライブラリなし、非コアLuaライブラリへの依存性なし)でLZ77デコーダを効率的に実装しようとしています - liblzgを参照してください。ネイティブLuaの効率的な可変バイト配列
バイナリファイルの読み込みと解析には、Lua文字列が完全に機能し、パフォーマンスが良好です(例:s:byte(k)メソッドを使用)。しかし、デコードされた出力データを作成するためには、文字列は不変であり、文字列の連結には多くの時間を要し、出力が大きくなると非常に時間がかかるので、文字列はあまり最適ではありません。
デコーダができなければならない:
- 追加時の出力に1バイトの出力バッファから
- 読む(多かれ少なかれランダムアクセス)(最大数百万回まで)
最適なオプションは何ですか?出力データのサイズは事前に分かっているため、事前に割り当てることができます。
で文字列に変換し、出力ストリームが終わったら?これは教育的なものかサンドボックス化されたLua環境で必要とされるものですか? –
これは教育的なものです(低レベルのコンパイルされた言語と管理されたスクリプト環境の間でパフォーマンスがどのように異なっているかを見たいと思います)。また、純粋なLuaの実装があれば、展開が容易になると思います。 – marcus256
完璧な質問です。 Btw私は同じアイデアを持っていたユニークではない – Hydro