Иван
Выпучи глаза в https://github.com/luavela/luavela - вдруг там уже есть? Туда много чего добавили.
А кто-то в чатике может точно сказать, поддерживается ли Cortex M процессоры?
Lucky
https://github.com/luavela/luavela/blob/master/docs/public/pub-faq.rst
Lucky
По русски - фигвам.
Lucky
Тому що нэма у пана атамана золотого запасу.
Alxius
там вроде было условия, что донат на поддержку архитектур только от юрлиц
Если лицо вытянулось оно стало более юридическим ?
Lucky
Если лицо вытянулось оно стало более юридическим ?
Смотря насколько оно стало ИПнутым.
Anonymous
Хохольский буржуй
Arslan
Немного чат перепутал
Anonymous
Ахах
Иван
Почему производительность Луа машины падает после рекурсивного Фибоначчи от 32-х?
Иван
Т.е. после fib(32) падает производительность
Snusmumriken
Может быть, потому что без мемоизации?
Snusmumriken
Потому что глубина стека? Потому что не стоит вычислять фибоначчи рекурсивно?
Snusmumriken
И вообще, чем меньше рекурсии в твоей жизни (особенно N^2) тем лучше?
Anonymous
Почему производительность Луа машины падает после рекурсивного Фибоначчи от 32-х?
Потому что записано без оптимизации хвостовой рекурсии, скорее всего.
Snusmumriken
@otvet148 здарова, задавай вопрос-ответы )
-
Привет! Создаю небольшую аркадную игру в рамках курса. Возникли проблемы с хп-баром. Нужен репетитор по этому вопросу, который мог бы выделить время для связи
-
Создаю в love
Snusmumriken
А что с хп-баром? Рисовать полосочку?
Snusmumriken
function drawBar(x, y, w, h, amount, max) love.graphics.rectangle("line", x, y, w, h) -- процент полоски умножаем на ширину local hp_w = amount / max * w love.graphics.rectangle("fill", x, y, hp_w, h) end
-
Да, она должна все время уменьшаться и увеличиваться при съедении сосиски. Я абсолютный новичок и в Гугле нашла только 25 вариантов хп бара для гта
-
А как задавать вот эту логику увеличения и уменьшения?
Snusmumriken
Snusmumriken
Snusmumriken
А как задавать вот эту логику увеличения и уменьшения?
Ну, кто-то кушает сосиску — увеличиваешь хп, получает урон — уменьшаешь )
-
А это в функции описывать той же или которая update?
Snusmumriken
Ну, если ты в update проверяешь съеденность сосисок — да, в ней
-
Хорошо, спасибо))
Snusmumriken
Вот у меня тут в wheelmoved, реакция на кручение колёсика мыши
-
Поняла
Иван
И вообще, чем меньше рекурсии в твоей жизни (особенно N^2) тем лучше?
Мои коллеги просто тест рекурсивного Фибоначчи прогнали и теперь говорят, что Луа медленная, по сравнению с wasm3 и Pawn
Snusmumriken
А они luajit пробовали?
Иван
А они luajit пробовали?
Я пробовал, но у него нет поддержки cortex m процессоров
Snusmumriken
Да вроде должно быть, обычный ARM жеж.
Иван
Snusmumriken
Но так — да, они сравнили скрипты и компилируемую фигню, а теперь почему-то удивляются что скрипты медленнее, кто бы мог подумать ))
Иван
Как и Pawn
Anonymous
Да скриптовая Луа зачастую делает даже натив. Скорее всего, рекурсию неправильно написали.
Snusmumriken
Не уверен, вероятнее всего это кусок вебасма. То что компиляется хотя бы частично в процессе исполнения.
Иван
Нам либо интерпретатор, либо jit нужен. AOT даже не рассматривали
Snusmumriken
Карочи, нечего сравнивать жопы с пальцами )) Чистые скрипты всегда будут уделаны, по природе своей. Другой вопрос — н а с к о л ь к о и достаточно ли этого.
Anonymous
Напиши правильно
return foo(x) - правильный хвост. foo(x) - неправильный, потому что компилятор подставляет неявный return и это уже не хвост. Вот и всё.
Snusmumriken
return foo(x) - правильный хвост. foo(x) - неправильный, потому что компилятор подставляет неявный return и это уже не хвост. Вот и всё.
У луёв нема компилятора, она не оптимизирует хвостовую рекурсию в принципе. И даже luajit не оптимизирует (только очень косвенно).
Anonymous
https://www.lua.org/pil/6.3.html
Snusmumriken
🤔
Snusmumriken
Если так то надеюсь это перекочевало в более новые версии, там этого не видел.
Snusmumriken
Карочи, ребятки, пишите на том что подходит. Все хвостовые рекурсии можно смело написать на сишной стороне, оставив луям логику, если ВДРУГ ЧТО-ТО НЕДОСТАТОЧНО БЫСТРО.
Anonymous
Всегда можно посмотреть байт-код :)
Snusmumriken
Я не использую рекурсию по религиозным соображениям читаемости и безопасности )
Иван
Вот результаты тестов фиба
Иван
Иван
Иван
Сам код
Snusmumriken
Это милисекунды на первой шкале?
Иван
В общем, до fib(14) по скорости как wasm3 и pawn_asm, до fib(33) быстрее pawn, но медленнее того же pawn_asm (интерпретатор pawn на ассемблере)
Snusmumriken
os.clock имеет очень низкую точность, кстати.
Иван
os.clock вообще самому пришлось имплементировать
Snusmumriken
Вот такие результаты у луажыта
Иван
Вот такие результаты у луажыта
Да да, у меня такие же. На компе.
Snusmumriken
Но на всякий случай напоминаю, что это делается вот так. А с мемоизацией и кешированием — и того быстрее при частом использовании.
Snusmumriken
Это итеративный фибоначчи + jit ))
Timur
http://www.playwithlua.com/?p=77
Snusmumriken
О, кстати хвостовая рекурсия отсюда кажись работает.
Snusmumriken
Лол кек чебурек
Snusmumriken
Сейчас ещё дам результаты 5.1 без JIT, когда посчитает )
Snusmumriken
Всё, лень ждать. Где что сам найдёшь. Результаты показаны так: обычный:хвостовой Я их правда одновременно гонял, так что результаты время от времени прыгают. Но суть в другом.
Snusmumriken
Карочи, сунь своим ребзям вот это, чтобы хвостовая рекурсия пахала. И пусть нюхают пуки. function tfib(n) local f function f(a, b, n) if n < 3 then return b else return f(b, a + b, n - 1) end end return f(1, 1, n) end А лучше — local f function f(a, b, n) if n < 3 then return b else return f(b, a + b, n - 1) end end function tfib(n) return f(1, 1, n) end Время не будет тратиться даже на генерацию функции.
Snusmumriken
Мне лень )
Иван
Просто получится так, что мы ускорили фиб в Lua, Wasm и нативе, но не ускорили сам Lua
Snusmumriken
Мм. Ты не понял.