doc.
хмм... а что за своя?
примерчик скрипта аналогичный...
doc.
> в 1.4 раза быстрее чем LUA
Кстати, это выдающийся результат. Мои поздравления.
Jay-C
>хмм... а что за своя?
Да, LUA меня неустроил в свое время своим интерфейсом сопряжения с C, и работой со структурами данных :) , написал свой под свои требования. За базу для синтаксиса взял C.
>примерчик скрипта аналогичный...
Просто перепиши на Си, получишь что надо :))
nbkolchin
>Кстати, это выдающийся результат. Мои поздравления.
Спасибо.
doc.
ясно, ну это здорово, а функциональность как?
Jay-C
>а функциональность как?
В смысле? Разверни вопрос поконкретнее.
xpinguin
>Также проводил тесты для N=30. Тут всех порвал Lua - 1 секунда, далее Python - 5 секунд и в аутсайдерах TCL - 7 секунд.
Наводит на мысль о невовремя сработавшем GC в Lua тесте для N=40. Если для меньшего числа итераций Lua быстрее, то и для большего он теоретически тоже должен быть быстрее.
GC threshold покрутить надо бы...
Правка: GC не имеет к этому отношения :(
Попробовал фибоначчи на Squirrel:
function fib(n)
{
if (n < 2) return n
return fib(n-1) + fib(n-2)
}
local n=30
print(fib(n)+"\n")
Lua 5.0 (не Jit) дает 0.69 сек, Squirrel - 1.1 сек.
RPGman
Aaa!! Один if замылил!! :)
Тут это критично.
Такой урезаный вариант у меня в 1.8 раза быстрее.
Правка:
Кстати вот еще тест на рекурсию(ф-ия Аккермана):
function Ack(M, N) if (M == 0) then return( N + 1 ) end if (N == 0) then return( Ack(M - 1, 1) ) end return( Ack(M - 1, Ack(M, (N - 1))) ) end Ack(3,9)
Операции с массивами:
function array_test( n ) local x, y = {}, {} for i=1,n do x[i] = i y[i] = 0 end for k=1,1000 do for j=n,1,-1 do y[j] = y[j] + x[j] end end end array_test(10000)
Непомню уже откуда брал, с какогото сайта по сравнению производительности.
doc.
>Aaa!! Один if замылил!! :)
Я не со зла :) Глупой показалась цепочка if(n==0) return 0 else if (n==1) return 1
Да и фибоначчи считать рекурсией глупо :)
Вот как надо: (Lua)
function fib(n) local r,p=0,1 for i=1,n do p,r=r,r+p end return r end
Никак не замеряешь скорость для N=1476 :) Дальше числа заваливают за 2e+309 и диапазона плавучки не хватает :)
Но то ясно, что рекурсия была для тестов, а не для скорости.
>Кстати вот еще тест на рекурсию(ф-ия Аккермана):
Я у себя могу только Lua и Squirrel (питоны и прочие троглодиты уже не в счет). С твоим на разных тачках меряться некорректно :)
Jay-C
>Ты с чем кроме ЛУА работал? чем он лучше?
питон, всем: прост в освоении, лаконичен, без типов, более читабелен, быстр, легко байндить, гибок
xpinguin
А какой был уровень оптимизации для luaJIT в тестах? А то у меня на рекурсивном фибоначчи для N=40 вышло 22 сек (-O2, P4 3GHz)
Правка: Отбой, _ace_ опередил.
RPGman
>Если для меньшего числа итераций Lua быстрее, то и для большего он теоретически тоже должен быть быстрее.
Для меньшего числа итераций Lua быстрее только чем Python. Python c Psyco в любом случае на рекурсии быстрее.
Про расчёт чисел Фибоначчи - это просто тест на рекурсию - я тм вообще что угодно считать мог ;) А оптимизация - мелочи, главное - все были в абсолютно одинаковых условиях.
Jay-C
>xpinguin
>Ну чтож тесты убедительны, а как с их внедрением в движок/программу?
попробуй lua + luabind внедрение будет улетным :)
для pyton есть boost::pyton тожа неплохая весчь!
IROV..
Дарофф :)
luabind для чего нужен? насколько я помню твою тему давным-давно, то для сохранения стэйтов?
Тема в архиве.