Laimadoo
получается for, как минимум в luajit будет быстрее
Snusmumriken
получается for, как минимум в luajit будет быстрее
Посмотри на размеры строк, попробуй разное.
Laimadoo
Оно и понятно, нет никаких регулярок, чисто иф
Snusmumriken
Чисто луёвый иф часто медленнее простой регулярки.
Laimadoo
Посмотри на размеры строк, попробуй разное.
вообще я увеличиваю их размер, по этому график и растёт
Laimadoo
Посмотри на размеры строк, попробуй разное.
при большом количестве символов которые не нужно заменять, gsub быстрее
Laimadoo
Laimadoo
В lua5.1, а не jit безусловно так и есть
Snusmumriken
Аккуратная регулярка универсальнее по перфу и потребляемой памяти.
Laimadoo
Вообще в принципе если сделать C'шную библиотеку подобного рода: int i = 0; while (s[i] != '\0') { unsigned char current_char = s[i]; if (escape_map[current_char]) { s[i] = escape_map[current_char]; } i++; }
Laimadoo
А потребление памяти вообще прекрасное
Сергей
так в этой функции ты же один символ заменяешь на два символа
Laimadoo
А потребление памяти вообще прекрасное
Только вот замена будет на символ. На большее нельзя
UtoECat
Вообще в принципе если сделать C'шную библиотеку подобного рода: int i = 0; while (s[i] != '\0') { unsigned char current_char = s[i]; if (escape_map[current_char]) { s[i] = escape_map[current_char]; } i++; }
стоп нет, есть нюанс. Выделить новую строку так и так придётся, менять строку полученную со стека функцией lua_tostring нельзя
UtoECat
А потребление памяти вообще прекрасное
так что не сильно будет разница от того, на два символа заменять или один. цикл for по строке с луашки, если символ не найден - в буфер переносим как есть, иначе добавляем нужную строку по подстановке Но это всё вообще на микросекунды гонка уже... gsub должно быть достаточно для большинства ситуаций
Всеволод
Звучит многообещающе или только звучит? https://mrcjkb.dev/posts/2025-04-07-lux-announcement.html
UtoECat
Звучит многообещающе или только звучит? https://mrcjkb.dev/posts/2025-04-07-lux-announcement.html
звучит, звучит... 💀 но посмотрим... Может и получится что-то неплохое по итогу... Пока сыроват проект всё-таки.
Михаил
Михаил
а, это darwin
Михаил
норм
UtoECat
да не, всё равно фигня какая-то... Пока один лишь Linux-x86 lux билдится, luarocks уже на всех платформах прогнался... Конечно, может если не с нуля lux собирать оно не так катастрофично будет... но всё равно заставляет задуматься.
UtoECat
Laimadoo
Laimadoo
Laimadoo
Хыхых)
Laimadoo
— Насколько вы хотите специфичный класс? — Да!
Laimadoo
Не ну зато максимально коротко, ща на бенчмарке проверю скорость
Laimadoo
Laimadoo
Не ну было предсказуемо
Red
легенды к осям прицепить забыли, хнык
Red
?
надписи, что мерили и в каких количествах
Laimadoo
надписи, что мерили и в каких количествах
Я на скорую руку делал. Сейчас доробатываю
Laimadoo
Первым этапом стало добавление N-ого количества линий
Laimadoo
Сейчас с графиком работаю
Laimadoo
кстати график stack[#stack+1] = a не правильный
Laimadoo
Я забыл +1 дописать, а это на оптимизацию влияет
Laimadoo
Laimadoo
проблемы с отображением не понятно
Laimadoo
ну да ладно
Laimadoo
Laimadoo
Оу ес. Я наконец-то справился
Неполноценный
Похоже на JSON..
Сергей
перекладыватель жысончиков?
Laimadoo
Похоже на JSON..
Так и есть. Я сделал json.lua
Laimadoo
Жалко только медленный
Неполноценный
Так и есть. Я сделал json.lua
Изобретаем велосипеды..
Неполноценный
Но.. учел ли ты одну особенность невозможности конвертации числовых ключей в JSON?
Неполноценный
?
А, увидел.
Неполноценный
"table":
Snusmumriken
Жалко только медленный
А ты по приколу его сделал? Я просто обычно делаю или что-то, где "я знаю что могу сделать *лучше* чем сделано" или "сделаю то чего ещё не делали".
Laimadoo
Laimadoo
Оу е)
Laimadoo
Теперь моё быстрее
Laimadoo
Я буквально убрал лишний value:find("[-]?%d+") на каждой итерации
Laimadoo
Ну и разную мелочь исправил
Laimadoo
Раньше "\\" считалась не законченой из-за \ перед ". Теперь скок хочш \ и будет правильно
UtoECat
Я буквально убрал лишний value:find("[-]?%d+") на каждой итерации
а на что заменил? на словарь символов? Или этот кусок просто не нужен был
Laimadoo
а на что заменил? на словарь символов? Или этот кусок просто не нужен был
Закинул в один find value:find("[-0-9tfn%[%]%{%}\"]", i) и если окажется число (- или 0-9), то уже тогда ищу всё число
Laimadoo
Это прокнуло скорее всего из-за того, что у меня весь массив цифр
UtoECat
Закинул в один find value:find("[-0-9tfn%[%]%{%}\"]", i) и если окажется число (- или 0-9), то уже тогда ищу всё число
ммм... А на malformed json как оно? Если например без кавычек \"\" будет строка? Оно-же не пропуcтит её просто?
Laimadoo
{ "a" [1 2 3] без запятых и двуеточий "b" "popabobra" я коментарий кста } Это json верите?
UtoECat
ммм... Интересное, конечно, решение...
Laimadoo
ммм... Интересное, конечно, решение...
: и , просто не нужны для обработки
Laimadoo
Да и код быстрее, когда не нужно спотыкаться об них
Laimadoo
Пускай твои ошибки в конструировании json файла находят другие. Здесь задача прочесть
Сергей
два режима с коррекцией ошибок и без
UtoECat
Да и код быстрее, когда не нужно спотыкаться об них
ну если такова задача... то, в целом, не так уж и плохо. Главное чтобы хотя-бы вложенность {}/[] обрабатывалась нормально, и в конце файла была сбалансирована, а то если файл скорраптится по-весёлому как-нибудь, например, и это никак не отловится вообще - то будет неприятно.
Laimadoo
Можно
rxi_json кстати на это обращает внимание