Для работы крутой черепашки мне потребовалось быстро сериализировать и передавать по сети большие объемы информации. 3д массивы, таблицы, и прочее прочее.
Внутренние методы СС Textutils.serialize не подходили, из за медленного оператора ".." , который добавлял в итоговую строку символы.
Поискав готовые решения на сайте lua-users, я нашел подходящий код для сохранения таблиц в файл, и переписал его под работу со строкой.
http://pastebin.com/AYB7u25g
Код:
Userdata, Функции и метотаблицы не сохраняются
Сохраняются только простые значения как таблицы, строки, числа а так же true\false
Замечу, что в моем коде для сбора строки используется таблица и метод table.concat(), который увеличивает скорость работы в разы.
Код можно использовать как в CС так и в OС. Он добавляет новые методы в глобальную таблицу table и вызывается так:
Результаты для двухмерного массива с 1 000 000 полей и замеры времени выполнения:
//CC textutils
serialize(): 45.94
unserialize(): 1.73
//OC serialization
serialization.serialize(): 40.00
serialization.unserialize(): 0.87
//Krutoy table.tostring:
table.toString(): 1.80
table.fromString(): 1.19
Пруф для меньшего количества полей:
http://ideone.com/ICpS0L