Цитата
Пишу, но ты же сам говорил, что на СИ работает быстрее. Я не спец по этим вопросам, но подозреваю, что откомпилированный Пилотом код будет выполняться ощутимо быстрее луашного. Ну по логике однозначно должен быть быстрее.
Начнем с того, что пилот написан да делфи =)
Почему код откомпилированный из синтаксиса пилота будет быстрее, чем откомпилированный из луа синтаксиса? Все зависит целиком от компилятора.
На си работает быстрее потому, что там нет оберток для работы с целочисленными переменными, нет хранения всего и вся в double, си быстрее потому что там не используется зачастую безопасный код. Например есть в с++ класс vector, который считается очень хоршо вылизанным. Суть вектора в том, что он берет на себя риски выхода за пределы массива, выделяет память и т.д. Цена за это - скорость. Причем существенно. Если память не изменяет, то раза в 2-3 падает. Lua безопасен, в нем все красиво подведено для того чтобы человек не заморачивался с типами данными, выделением памяти, выходами за пределы массивов, указателями, свой garbage collector, и т.д. Чтобы все это работало нужны доп вычисления. Делаем выводы. И это не проблема lua, и luajit в частности. У них очень хорошая скорость работы, вылизанный код. Просто если хочется скорости то программист сам должен контролировать многие вещи. Хочется автоматики - автоматика кушает ресурс. Ну и не в обиду кнайту будет сказано, но луа развивался годами, вылизывался годами командой программистов, которые все, что делали - развивали луа, потом пришел luajit с его динамической компиляцией над которым работает еще толпа народа. Чисто объективно, если хочется получить нереальную скрость, то одного кнайта мало =)
Вообще плотно не касался, но урывками читал, что народ при компиляции luajit отключает дополнительно какие-то проверки безопасности кода и получает прирост (в luajit часть из них уже отключена изначально). По большому счету в идеальных условиях lua мог бы заработать примерно в 3 раза быстрее - это получится скорость чистого СИ. А накладные расходы за удобства куда и как?
Кстати наткнулся буквально вчера на тест lua-api стандартый vs ffi. Разница почти в 10 раз в пользу ffi. Команда luajit творит чудеса. Я уже молчу про то, что lua-api костыль страшной силы и для использования либ они должны быть частично переписаны/обернуты на, например, СИ, в то время, как через ffi можно использовать любые стандартные сишные либы, в т.ч. доступ к виндовым.
https://luapower.com/winapiЗаметь, никаких оберток. Только чистый ffi с банальным указанием типов данных которые жрет либа.