Size: a a a

2021 November 28

S

Snusmumriken in pro.lua
Ок. Бери Luajit, выдирай из него TCC. Пусть пользователи будут писать "скрипты" на С, которые будут в рантайме мгновенно собираться и запускаться.
https://github.com/Playermet/luajit-tcc
источник

VO

Vyacheslav Olkhovche... in pro.lua
нет, на си писать не вариант.
источник

S

Snusmumriken in pro.lua
Тогда изобретай свой язык. Ровно для задач "скомпилированный скрипт О(0)"
источник

S

Snusmumriken in pro.lua
Кстати, интересно, почему его ещё не изобрели? Такая же популярная задача ))
источник

VO

Vyacheslav Olkhovche... in pro.lua
потому что libllvm толкьо относительно недавно пошла в массы
источник

VO

Vyacheslav Olkhovche... in pro.lua
лет через десять будет заметно, а не только в месе и постгресе
источник

L

Leon174 in pro.lua
Его, кстати, подобрали и продолжили ковырять.

https://repo.or.cz/w/tinycc.git
источник

S

Snusmumriken in pro.lua
Ооо, крутяк
источник

AZ

Aydar Zarifullin in pro.lua
1) Берешь Lua пишешь нужную хрень, если точно не укладываешься в лимиты то переписываешь на C и объясняешь юзерам что вариантов нет.
источник

S

Snusmumriken in pro.lua
Ок, берёшь Lua скрипт и транслируешь в C, после чего собираешь. Ты можешь поставить любой препроцессор перед запуском, например сборку при изменениях скрипта. Первый запуск будет длиться чуть дольше (на милисекунды), но зато на выходе сишка. Лишний раз напоминаю об этом. Для сборки можешь использовать TCC выдранный из Luajit.
https://github.com/davidm/lua2c
источник

S

Snusmumriken in pro.lua
Ох блин, точно, забыл про эту дичь.
https://nelua.io/
источник

VO

Vyacheslav Olkhovche... in pro.lua
похоже по производительности разницы между

pkt:tcp_set_syn(1)
pkt:tcp_set_ack(
1
)
и
pkt:tcp_set_flags(tcp_flags.syn+tcp_flags.
ack)
то ли не будет то ли первый вариант даже побыстрее должен быть
с учетом того что сумма не оптимизируется вообще никак
источник

S

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

VO

Vyacheslav Olkhovche... in pro.lua
и как его расширять и встраивать?
источник

S

Snusmumriken in pro.lua
А то ещё будет pkt искать в глобал спейсе. Плюс тут явно создаётся таблица, не создавай её, нагрузка для сборщика мусора.
источник

VO

Vyacheslav Olkhovche... in pro.lua
нихера не выйдет у меня же сетевые пакеты т.е. userdata в полный рост
источник

S

Snusmumriken in pro.lua
С сохранением производительности? Никак.
источник

S

Snusmumriken in pro.lua
Мы же говорим про высокую производительность а не незнамо что? Да, ты используешь строки? Где-то есть, например, расщепление строчек?
источник

VO

Vyacheslav Olkhovche... in pro.lua
не таблица а userdata с mtatable
источник

S

Snusmumriken in pro.lua
Происходит лукап метатаблицы в таблице индекса при вызове каждого метода, а потом поиск функции в этой метатаблице. Это медленно.
источник