Viacheslav
Даже без JIT?
Snusmumriken
А в частных случаях - в несколько сотен раз быстрее 5.2.
Snusmumriken
Луаджит без JIT - не очень джит ))
Viacheslav
Ну вот поэтому я и спросил, ибо нормальных цифр со сравнением не нашёл. Кто-то говорит, что всё равно раза в три быстрее.
Snusmumriken
Возможно, вопрос в том, имеется ли поддержка у луажыта на данной платформе - в плане, напишет ли Майк Пол ответ по косяку, если он обнаружится.
Snusmumriken
Ну вот поэтому я и спросил, ибо нормальных цифр со сравнением не нашёл. Кто-то говорит, что всё равно раза в три быстрее.
Хмм. http://luajit.org/performance_x86.html Можно сравнить. 5.1 практически идентична по скорости относительно 5.2.
Snusmumriken
Пойду напишу свой джыт )) Правда, у 5.1 и так всё весьма неплохо с самим языком, его можно особо не развивать. А вот объём супер-качественных сторонних либ - подкачал, да.
Snusmumriken
Там кроме багфиксов ничего не будет уже, проект не развивается.
Смотря сколько ты заплатишь Майку )) Он может неожиданно вспомнить что забыл написать крутой сборщик мусора.
Viacheslav
Хмм. http://luajit.org/performance_x86.html Можно сравнить. 5.1 практически идентична по скорости относительно 5.2.
Хорошо, если так. Lua 5.3 меня в плане производительности и жора памяти разочаровал. Если 5.2 на уровне 5.1, то есть смысл попробовать.
Viacheslav
Либы меня не интересуют, у нас использование довольно специфическое, свои привязки для всего, что нужно.
Snusmumriken
Зачем вам в принципе луа? Что собрались делать? Секрет бизнес-плана?
Viacheslav
Нет, у нас в Блумберге используется в фреймворке для генерации отчётности. Чисто для описания абстракций типа "возьми три физических поля из базы и преобразуй в одно логическое".
Viacheslav
Поэтому оно должно молотить как можно быстрее, вот и всё.
Viacheslav
JIT потом будет, когда всё на Linux переползёт.
Snusmumriken
А, нормуль. А вместо платформы что? Просто luajit есть почти везде, и на ARM, и на x86 и на MIPS. Было бы странно найти какую-то особую платформу, где оно не работает. Молотилки - это не проблема ни для чего, если у вас есть биндинг на сишные функции, которые производят конкретное молочение, а луа типа только запускает нужный сценарий и только решает логику поведения.
Viacheslav
Пока что поддерживаются на уровне с Linux, иначе давно бы LuaJIT туда впихнул.
Snusmumriken
А это кто?
Snusmumriken
Спарки у нас - или на x86 или на PPC, помнится.
Viacheslav
Спарк не поддерживает 64 бит jit, насколько я помню.
Viacheslav
В итоге вся малина лесом идёт.
Snusmumriken
А чего, вам в луях надо хранить терабайты данных, или просто типа вся база - 64-битная?
Viacheslav
Весь код 64 бита, потому что там кешей в процессе полно.
Viacheslav
Ладно, будем пробовать, спасибо. Главное, что ванильный 5.1 не был медленнее, чем 5.2.
Snusmumriken
Ладно, будем пробовать, спасибо. Главное, что ванильный 5.1 не был медленнее, чем 5.2.
Не бойся, 5.1 - самое быстрое из ванильной линейки, помнится.
Viacheslav
Хорошо, тогда попробую прикрутить и померить.
Snusmumriken
Даже для того чтобы 5.1 быстрее скрипты грузил, под эту версию переписывали синтаксический анализатор на кастомный )) Помнится, именно под неё.
Snusmumriken
Попробуй ещё собрать x64-luajit под PPC, оно вроде есть. > в отчёте 170 колонок и под миллион строк Групповые операции? Да, предупреждаю что вызов луашной функции из сишки - это плохая идея, луа вызывает сишку быстро, а сишка вызывает луа медленно (особенности безопасности фиговин). Это я на случай если будешь делать что-то такое: void foo(lua_State * L, TABLE _tbl_) { // на вершине стека - луёвая функция for (int i = 0; i < _tbl_.raw_count(); i++){ // пихаем строку таблицы luax_pushtable(L, _tbl_.raw(i), 1); // пытаемся обработать строку луёвой функцией с вершины стека lua_call(L, 1, 0); } }
Snusmumriken
Можно попробовать изобрести способ сообщить сишке необходимую последовательность действий, и типа сишка сама её выполнит по отношению к каждой колонке в наборе строк.
Viacheslav
Там пул потоков, в каждом свой lua state с кастомным локальным аллокатором, параллельно обрабатываются индивидуальные ряды, а не колонки. Сейчас именно С++ дёргает Lua, но это всё переделать у меня пока что руки не дошли.
Viacheslav
Надо будет сделать, чтобы один раз передавалась вся последовательность операций, потом через multret это можно распихать, куда надо.
Viacheslav
Про luajit 😂
Viacheslav
А, кстати, если его пробовать, то что лучше взять? Стабильный, бету или вообще git master?
mva
гитомастер тоже не один :)
mva
вообще, более стабильным считается мастер 2.0 бранча
Snusmumriken
Можешь LuaJIT 2.1.0-beta3, тут как раз пофиксили 64-битную версию чтобы она нормально память отжирала, а не дохла на 1-2-4гб.
mva
в 2.1 иногда завозят вкусняшки
Snusmumriken
Да уже запилил. Работает функция. Проблема была в том что я делал это в шаблонизаторе. Сделал в основном модуле.
Специально для таких как ты, мутю нормальную парсилку URI с автоочистителем.
Snusmumriken
https://pastebin.com/waybSfQv
Snusmumriken
Хех, оно даже пути файловой системы парсит, хоть и ниочень ))
Snusmumriken
В общем, доадаптировать до универсальности и норм.
B
философ
Alexey
Esl
vitaly
Специально для таких как ты, мутю нормальную парсилку URI с автоочистителем.
задача другая была - я вписывал "описание" в урл к картинке - если в "описании" встречался символ который ломает урл. а именно обратный слеш,даш и знак вопроса ну и двоеточие еще 😂 - то в переменной ngx.var.uri - был не полный урл и естесвенно скрипт крашился
Mark ☢️
https://github.com/luaposix/luaposix/pull/307
Mark ☢️
ЙА зопелил
Mark ☢️
ты прямо пиздец какой добрый, лучше бы заревьюирил чем заниматься подобной херотой
Snusmumriken
Нет, лучше заниматься подобной херотой, ты сам умница и не использовал никаких глобалов и undefined variables. Ведь правда?
Snusmumriken
Mark ☢️
блин, я состою овердохера айтичятов, и только в этом какая-то очень странная атмосфера, я пока не вкурил почему
Snusmumriken
Топово же!
Snusmumriken
На самом деле, просто ты не очень нравишься лично мне, своей категоричностью и кучей резких слов не по делу, поэтому я отвечаю тебе примерно тем же.
Mark ☢️
ну хз, имхо всё по делу, с пруфами. ну резко. тут возможно, но что ж делать. правда-матка
Mark ☢️
а чтобы понравиться надо сопереживать автору и говорить как всё плохо ?
Mark ☢️
а, да, надо ещё любить винду
Mark ☢️
я забыл
Snusmumriken
Хех, объясняю на пальцах: 1. Правды-матки не существует, есть куча восприятий кучи разных людей, и это всё. Единственное, где есть правда-матка - конкретные вычисления (например, что быстрее: вот этот пример или вот этот, на столько-то процентов). 2. Линукс не лучше виндовса. Виндовс не лучше линукса. Мак не лучше ни виндовса ни линукса. Мобильные операционные системы - мерзкие (кроме мб symbian). Произвольный фанатизм - способ зашорить свой моск остро предвзятым мнением, и это, имхо, отвратительно. Если уж говорить про это - то стоит добавлять это самое "имхо" к каждому предложению, иначе ты начинаешь пороть агрессивную ерунду. Или стоит уточнять конкретные случаи, где что оказывается лучше, и почему. Золотых молотков не существует. 3. У людей разный жизненный опыт. У кого-то он шире, у кого-то он глубже. Считать что у тебя - единственно верная точка зрения, на мой взгляд - весьма недалёко.
Mark ☢️
Имхо, я понял
Snusmumriken
Вот теперь вокруг любовь и благодать : )
Dadaskis
Вот теперь вокруг любовь и благодать : )
Достижение получено: "Дипломат-мудрец". (Если что согласен с твоей точной мнения, но ты так быро всех усмирил ;D)
Snusmumriken
Не, ачивка "читак-засранец", потому что я потёр кучку демонстративных воплей после.
vitaly
а кто нить тут сайты делает на ngx_lua_module?
mva
соцопрос?
Snusmumriken
Добрый всем вечер, У меня возник вопрос. Я пишу клиент - серверное приложение. Все, что мне нужно - это обратится к базе данных на удаленном сервере. Как это можно сделать? Что использовать?
Snusmumriken
https://redis.io/
Snusmumriken
Благодарю
Snusmumriken
Ну в реальном приложении нужны всякие авторизации, сессии, токены и прочая бла-бла.
Snusmumriken
То есть это автоматом какой-нибудь openresty в связке с той же редиской.
Snusmumriken
Опенрести умер
Snusmumriken
Живее всех живых )) Кстати, крайне простое юзание.
mva
или есть какой-то конкретный вопрос?
Snusmumriken
Если что, опенрестя - фактически нгинкс с ngx_lua_module, даже люди одни и те же делали.
vitaly
https://github.com/openresty/lua-nginx-module
vitaly
да знаю я
vitaly
😂
Snusmumriken
Ну кароч да, я прямщас осваиваю веб-хренотень ))