Size: a a a

2021 May 28

RA

R A in pro.lua
return foo(x) - правильный хвост.
foo(x) - неправильный, потому что компилятор подставляет неявный return и это уже не хвост.
Вот и всё.
источник

IS

Ivan Stepanov in pro.lua
У меня не получилось рекурсивный фиб написать, значит.
источник

S

Snusmumriken in pro.lua
У луёв нема компилятора, она не оптимизирует хвостовую рекурсию в принципе. И даже luajit не оптимизирует (только очень косвенно).
источник

RA

R A in pro.lua
источник

S

Snusmumriken in pro.lua
🤔
источник

S

Snusmumriken in pro.lua
Если так то надеюсь это перекочевало в более новые версии, там этого не видел.
источник

S

Snusmumriken in pro.lua
Карочи, ребятки, пишите на том что подходит. Все хвостовые рекурсии можно смело написать на сишной стороне, оставив луям логику, если ВДРУГ ЧТО-ТО НЕДОСТАТОЧНО БЫСТРО.
источник

RA

R A in pro.lua
Всегда можно посмотреть байт-код :)
источник

S

Snusmumriken in pro.lua
Я не использую рекурсию по религиозным соображениям читаемости и безопасности )
источник

IS

Ivan Stepanov in pro.lua
Вот результаты тестов фиба
источник

IS

Ivan Stepanov in pro.lua
источник

IS

Ivan Stepanov in pro.lua
источник

IS

Ivan Stepanov in pro.lua
Сам код
источник

S

Snusmumriken in pro.lua
Это милисекунды на первой шкале?
источник

IS

Ivan Stepanov in pro.lua
Да
источник

IS

Ivan Stepanov in pro.lua
В общем, до fib(14) по скорости как wasm3 и pawn_asm, до fib(33) быстрее pawn, но медленнее того же pawn_asm (интерпретатор pawn на ассемблере)
источник

S

Snusmumriken in pro.lua
os.clock имеет очень низкую точность, кстати.
источник

IS

Ivan Stepanov in pro.lua
os.clock вообще самому пришлось имплементировать
источник

S

Snusmumriken in pro.lua
Вот такие результаты у луажыта
источник

IS

Ivan Stepanov in pro.lua
Да да, у меня такие же. На компе.
источник