Как в Lua правильно настроить профилирование (profiling)?

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
Ultrabyte
Posts: 146
Joined: Sun 26 Mar, 2023 17:59
Has thanked: 13 times
Been thanked: 9 times

Как в Lua правильно настроить профилирование (profiling)?

Post by Ultrabyte »

По наводке от Shmuel: viewtopic.php?style=3&p=179221#p179221
В ней ссылка на статью: https://luajit.org/ext_profiler.html (низко-высокоуровневые профилирования)

Изучил, но остались "непонятности":
1) для меня, наверное, подходит раздел "Низкоуровневый API Lua"
2) добавил в коде ViewColor строки: local profile = require("jit.profile")
Не ругается, всё ок, идем дальше.
3) требуется вставить код profile.start(mode, cb) в нужное место
но не смог разобраться, например написал так:
profile.start("i", cb)
Ошибка: bad argument #2 (function expected, got string)

Что именно подразумевается "cb" ? в статье сказано, что некая функция содержащей (thread, samples, vmstate) исходник на гитхабе этой функции.
Полагаю настолько очевидные вещи для обычных пользователей, что не нужно даже демонстировать example.

Или может быть перейти в раздел "высокоуровненый" Профилирование?

Пытаюсь понять, от чего LUA на пару секунд еле-шевелится, и затем на пару секунд бодро-шустро, и затем опять еле-шевелится (чередования по секундам).
Last edited by HaRT on Fri 06 Jun, 2025 18:14, edited 1 time in total.
Reason: Улучшен заголовок Темы
Shmuel
Posts: 7044
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 44 times
Been thanked: 591 times

Как в LUA правильно настроить Профилирования (Profile) ?

Post by Shmuel »

Ultrabyte wrote: Fri 06 Jun, 2025 14:22 profile.start("i", cb)
Ошибка: bad argument #2 (function expected, got string)
"cb" это вероятно от слова callback.
Ошибка вроде понятная, второй аргумент должен быть функцией, а по факту оказался строкой.
Ultrabyte
Posts: 146
Joined: Sun 26 Mar, 2023 17:59
Has thanked: 13 times
Been thanked: 9 times

Как в Lua правильно настроить профилирование (profiling)?

Post by Ultrabyte »

Shmuel wrote: Fri 06 Jun, 2025 15:00 второй аргумент должен быть функцией
Согласен, об этом упоминается в статье, в ошибках, но вот затык, нет example "function CB":(
В инете упоминается разные виды LUA, в котором описывалось как profile.start(mode, "\out\profile.log") - но это явно не наш случай.
И, конечно, есть еще образец . Отсюда: https://github.com/2dengine/profile.lua

Но это снова не наш случай, т.к. другой PureLUA.
Остается открытый вопрос, как написать образцовый пример функции "cb".
Last edited by Ultrabyte on Sat 07 Jun, 2025 02:17, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 14338
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 80 times
Been thanked: 475 times
Contact:

Как в Lua правильно настроить профилирование (profiling)?

Post by John Doe »

Пример cb вижу в коде по вашей ссылке (репозиторий luajit).
Вторая ссылка это уже другой совершенно независимый профайлер, но и его тоже можно использовать. Единственное там сказано о необходимости отключить оптимизации luajit но не приведено команд как именно.
https://t.me/FarManager — Telegram чат
Post Reply

Return to “Нужна помощь”