RPGman
> Ни в коем случае. Если оба без jit, то статически типизированный AS где-то на
> уровне динамического lua, что уже говорит не в пользу as.
Ну это не корректное сравнение.
Lua быстрый, в частности, за счет JIT. Тем более новый JIT, который по тестам просто вообще зверь.
RPGman
> Вот этого и нет как раз.
вот тут есть какой то я правда его пока не проверял
http://forums.blind-mind.com/index.php?topic=3345.0
@!!ex
> Ну это не корректное сравнение. Lua быстрый, в частности, за счет JIT.
Луа вообще сам по себе быстрый, без оглядок на jit.
И если as не смог его заметно обогнать, при том, что в его рантайме не может быть чудес, допустимых для луа, то это таки показатель.
Chaos_Optima
> вот тут есть какой то я правда его пока не проверял
Возможно. Просто гугление на angelscript jit приводит первым делом на доки по as, где сказано что jit not provided, but there's interface to implement one.
А так интересно будет сравнить с LuaJIT 2.0 :)
RPGman
гм, тут когда-то уже обсуждалась скорость работы скриптов и один человек привел очень хорошие тесты в которых AS превосходил или был равен или отставал но не сильно LUA
p.s. вот они - http://www.gamedev.ru/flame/forum/?id=11843&page=5
Новая версия AS может быть быстрее той что я тестировал когдато.
AS по скорости работы с реальными переменными и вызовами реальных функций программы, недостижим LUA и другими скриптовыми движками. Приемущество AS в этом очень значительно, и вызовы функций программы из скрипта используется чаще чем расчёты молекулярного распада написанные в скрипте.
Вот другой пример:
у нас есть код из 3х частей, что-то типа такого
1. st=getStatusInterface();
2. Код который делает какуюто сверку и считает что-то типа st+=2, как правило тут что-то простое без тяжелых вычислений ядерных реакций.
3. UpdateInterface(st);
Предположим(допускаю ибо AS vs Ljit не тестил) что часть 2 на AS выполняется медленнее чем на LUAJIT разнится в скорости будет просто мизерная, да и выполнение этого кода займет очень мало нано секунд, что в общем потоке на фоне вызовов функций будет просто незаметно.
а вот вызовы функций часть 1 и 3, будут выполнены быстрее AS чем на luaJIT, и с лихвой привысит ту возможную разницу которую LJIT мог отвоевать у AS во второй части программы.
Очень интересная статья, разожгла интерес. Пойду скачаю и посмотрю, что к чему там.
Тестить надо в игровом проекте, а не гонять какую-то никому не нужную синтетику.
DDMZ
> а вот вызовы функций часть 1 и 3, будут выполнены быстрее AS чем на luaJIT, и с
> лихвой привысит ту возможную разницу которую LJIT мог отвоевать у AS во второй
> части программы.
С чего бы?
Что мешает в JIT заменить поиск методов по стэку на прямые указатели?
А зачем класс vec3f наследовать от RefC? ^_^
мне кажется скриптовый язык должен быть более динамичным
не во всех случаях нам нужно в скрипте иметь аналог объектов движка, часто у скрипта свои задачи и свои данные для их решения, поэтому одному и тому же объекту могут соответствовать сильно разные наборы данных в скрипте
можно еще посмотреть на Squirrel и GameMonkeyScript они тоже с С подобным синтаксисом, но более динамические
IROV..
> А зачем класс vec3f наследовать от RefC? ^_^
ну это я просто из своих тестов копировал. просто зачем для каждого класса писать счётчик ссылок если можно написать класс и потом от него наследоваться
DDMZ
> Приемущество AS в этом очень значительно, и вызовы функций программы из скрипта
> используется чаще чем расчёты молекулярного распада написанные в скрипте.
угу
мне особенно понравились вот эти тесты
http://www.gamedev.ru/flame/forum/?id=11843&page=6
где показано что вызов функций из AS и вызов AS функций в 10 быстрее чем в Lua
Chaos_Optima
> где показано что вызов функций из AS и вызов AS функций в 10 быстрее чем в Lua
Нужно в любом случае аккуратно резать скриптовую часть от натива. Не пытаться делать идентичные структуры, или выставлять в скрипт полный рефлекшн нативного объекта.
Не размазывать функционал равномерно по всем слоям, и не делать частых мелких функций на противоположной стороне. Вместо одного мелкого действия над объектом в натив нужно выносить пакетную обработку целой коллекции примитивов. И это рулит в любой связке языков, даже в жабе.
Chaos_Optima
> где показано что вызов функций из AS и вызов AS функций в 10 быстрее чем в Lua
ну не так уж и часто это нужно
Pushkoff
> ну не так уж и часто это нужно
Ну не скажи... 90% задач скриптов - вызывать нативные функции в нужный момент с нужными параметрами.
НЕ вычисления же на скриптах ваять.
Вообще да, не плохо было бы из Lua вызывать нативные методы напрямую и не через стэк. По указателю, это было бы быстро и востребованно.
@!!ex
> Ну не скажи... 90% задач скриптов - вызывать нативные функции в нужный момент с
> нужными параметрами.
я видел не много скриптов, но в большинстве из них нативная функция вызывалась 2-3 раза за такт/объект, в основном это что-то типа setAnimation или Trigger(something)
сейчас я в основном работаю с флеш скриптами, там все нативные вызовы происходят через fscommand, вот там эти вызовы происходят на всю подсистему в единичных количествах, потому что большая часть данных либо хранится в скрипте либо нативная часть засылает их в скрипт
Тема в архиве.