Я пытаюсь сделать эффективную реализацию декодера LZ77 на нативном Lua (то есть без библиотеки C и без зависимостей от неосновных библиотек Lua) - см. liblzg .
Для загрузки и анализа двоичного файла строка Lua работает отлично и с хорошей производительностью (например, используя метод s: byte (k)).Однако для создания декодированных выходных данных строки не очень оптимальны, так как они неизменны, и конкатенация строк имеет тенденцию занимать много и много времени, когда выходной объем становится большим.
Декодер должен иметь возможность:
- Добавлять один байт к выходу за раз (до миллионов раз)
- Чтение (более или менее произвольный доступ) из буфера вывода
Какие самые лучшие варианты?Размер выходных данных известен заранее, поэтому он может быть предварительно выделен.