Как стать автором
Обновить

Lua vs. JavaScript

Время на прочтение1 мин
Количество просмотров18K
SmallPic

Недавно я написал пост о том как сделать рейтрейсер. Код рейтрейсера тогда был написан на JavaScript. Мне стало интересно, как с этой же задачей справится Lua, а именно LuaJIT 2.0. Ниже результаты сравнения.



Участие принимали Chrome 9.0 Beta, Opera 11.01, Firefox 4.0 Beta 9, Explorer 9 Beta и LuaJIT 2.0 Beta 5. Все пять участников рендерили одну и ту же сцену на экран 1000x1000 по три луча на пиксель. Вот эта сцена:

BigImage

Результаты следующие (RPS означает «число лучей в секунду»):

Chrome 20,400 RPS
Opera 15,700 RPS
Firefox 9,300 RPS
Explorer 9,000 RPS
LuaJIT 5,000 RPS


Неожиданный результат: LuaJIT оказался самым медленным, причём с отрывом от остальных участников.

Как заметил FreeLancer, можно изменить настройки сборщика мусора в Lua. Если дописать в начало кода строчку collectgarbage('setpause', 2000) то сборщик мусора будет редко прерывать работу рейтрейсера и скорость вырастет до 25,000 RPS, но пиковое потребление памяти вырастет до 1,5 гигабайт. Chrome «съел» всего лишь 150 Мб когда показал результат 20,400 RPS.

Здесь можно скачать код примеров: JavaScript и LuaJIT. Код JS и Lua идентичен, за исключением мелких синтаксических различий. Чтобы запустить пример на Lua у себя, нужно сделать себе файл luajit.exe (взять с сайта LuaJIT готовый или скомпилировать из исходников) и выполнить в командной строке
luajit main.lua
Теги:
Хабы:
Всего голосов 63: ↑59 и ↓4+55
Комментарии91

Публикации

Истории

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань