Ale
мне казалось, что он медленнее, хоть и незначительно
Ale
ну а luajit конечно)
KlonD90
ну там по тестам рвал когда-то. сейчас может уже догоняют.
KlonD90
но в тарантуле меня этот lua все равно напрягает :/
Aleksand
но в тарантуле меня этот lua все равно напрягает :/
он еще и в nginx отлично работает, особенно любят такой подход китайские парни
Dmitrii
Objection.Js
Это же orm?
Konstantin
Почти
Kons
Кажется, он значительно медленнее и так не реактивного Express. Нет? Или вам скорость не решает?
Ну во-первых, для меня пока скорость не критична, а во-вторых, хотелось бы посмотреть источник такой информации :)
Konstantin
Никто не мешает писать raw
Konstantin
Ну и маппинг 1:1, 1:n, n:n есть
Dmitrii
Ну такой маппинг во всех орм есть же
KlonD90
он еще и в nginx отлично работает, особенно любят такой подход китайские парни
ну вот есть прекрасный luajit. вот тарантул если нужна скорость то логику в тарантуле и впереди на go какие-нибудь штуки для трафика
Aleksand
Ну во-первых, для меня пока скорость не критична, а во-вторых, хотелось бы посмотреть источник такой информации :)
ну я смотрел несколько бенчмарков, верить бенчмаркам сложно, автор всегда побеждает со своим модулем.
Kons
Действительно, сильно проигрывает
Aleksand
ну вот есть прекрасный luajit. вот тарантул если нужна скорость то логику в тарантуле и впереди на go какие-нибудь штуки для трафика
ну я так понимаю смысл основной luajt в таких местах это расширение логики работы "не отходя от кассы", поэтому оно вам либо нужно, либо не нужно. никто же не навязывает такой подход.
Дима
https://translate.google.ru/
Дима
Ну если тебе надо переводить 12 Гбит/сек, то только платно))
Дима
Быстро, много, бесплатно — выберите любые два
Aleksand
а кто-нибудь озадачивался вопросом быстрейшего парсинга JSON на NodeJs? есть ли что-то значительно быстрее JSON.parse?
Serhii
Я полюбил Коа, кастомизируемый очень сильно и это очень нравится
Aleksand
Нет и быть не может
почему не может?
KlonD90
а что упираетесь в JSON parse? Вроде один из самых быстрых парсингов такого нетипизированного формата
A
а кто-нибудь озадачивался вопросом быстрейшего парсинга JSON на NodeJs? есть ли что-то значительно быстрее JSON.parse?
Смотря что именно ты имеешь в виду под парсингом. Если string -> json в общем виде, то скорее всего JSON.parse твой выбор. Ну... может быть какая-то нативщина существует, которая будет быстрее, но интеграция падает на твои плечи. Потоковые парсеры на ноде вообще очень странно-сложная штука. Возможен вариант, когда ты, например реально не хочешь парсить всё, а хочешь получить данные только из некоего подмножества. В таком случае таки да, тебе нужен SAX парсер. И в определенных случаях даже плохонький SAX будет быстрее чем JSON.parse
Aleksand
а что упираетесь в JSON parse? Вроде один из самых быстрых парсингов такого нетипизированного формата
не то чтобы упираюсь прям сейчас, но потенциально это адский ботлнек для критичных ко времени операций.
Aleksand
а чего парсите-то?
JSON в несколько КБ размером
A
Тогда и не парься
A
SAX/потоковый парсер на таких объемах тебе даст большой оверхед. Он вообще для другого. А если ты напишешь более быстрый JSON.parse, то срочно публикуй в npm )
Aleksand
Тогда и не парься
ну на больших нагрузках это приводит к большим проблемам которые там на месте с наскока уже не решить)
Vladimir
Это решается простой балансировкой
Aleksand
SAX/потоковый парсер на таких объемах тебе даст большой оверхед. Он вообще для другого. А если ты напишешь более быстрый JSON.parse, то срочно публикуй в npm )
ну зачем я? есть десятки сишных и кто-то даже говорит что быстрее протобуфа умеет, и к ним даже есть обвязки к ноде
A
Ну смотри, JSON.parse в данном случае - чистое вычисление. Т.е. в рамках ноды ты его не сможешь ни распараллелить, ни пустить хм.. в другой поток Учитывая, что я напрочь не знаю, как устроен внутри JSON.parse, но знаю как устроены парсеры JSON в некоторых других языках, то мой опыт говорит, что едва ли ты напишешь что-то чуть более быстрое, чем JSON.parse. По крайней мере это не решит твою проблему с нагрузкой.
Aleksand
Это решается простой балансировкой
балансировкой чего именно?
Vladimir
Всего приложения
A
нагрузки по инстансам приложения
A
В общем Vladimir прав. Думаю про балансировку и scale-out
Aleksand
нагрузки по инстансам приложения
ну оптимизация скорости парсера - вопрос вертикального масштабирования, а инстансы и распределение - это горизонтальное. разные области
Vladimir
Это так, но скорость парсинга не должна быть существенной для масштабирования
A
Ну тут идея такая, что ты не получишь 200% ускорения на парсере
Vladimir
Если она существенно - то это фундаментальные проблемы
Vladimir
Никакая либа не даст тебе тот же интерфейс что JSON.parse быстрее
A
да, тут возможный вариант использовать стороннюю либу с обвязкой только
не забывай про всякие радости в духе копировние данных, переключение контекстов и всё это добро. Потому что данные, которые ты собрал в C еще надо в виртуальную машину подпихнуть
Aleksand
Никакая либа не даст тебе тот же интерфейс что JSON.parse быстрее
почему? если сам парсинг реализован намного быстрее в сторонней либе, то почему не даст?
Vladimir
Потому что он сам парсинг занимает незначительную часть времени
Vladimir
Я экспериментировал с подобным подходом
Vladimir
Результат - только потеря производительности
Aleksand
Результат - только потеря производительности
а можно конкретнее? что с чем сравнивали?
Aleksand
например в го есть реализации работающие с json в 10 (!) раз быстрее чем стандартная библиотека, поэтому непонятно почему стандартная бибилотека эталон? тем более глядя на нативную реализацию в ноде промисов эпичную, которая нереально плоха была до недавнего времени
Aleksand
не забывай про всякие радости в духе копировние данных, переключение контекстов и всё это добро. Потому что данные, которые ты собрал в C еще надо в виртуальную машину подпихнуть
тут на самом деле все не так страшно, поток один и переключений контекста не будет, основная задача это аллоцировать данные из v8 в js-объект
Vladimir
При этом парсер работал в параллельном потоке
Aleksand
Vladimir
> c JSON.stringify
Aleksand
а зачем сравнивать encode и decode? это же разные задачи
Vladimir
всмысле JSON.parse, конечно
Aleksand
всмысле JSON.parse, конечно
вы сравнивали JSON.stringify и JSON.parse друг с другом?
Vladimir
Нет
Vladimir
Парсер на C с JSON.parse
Aleksand
Парсер на C с JSON.parse
а каким? их десятки причем по скорости несопоставимых.
Vladimir
Не помню уже, какой-то из очень быстрых
Anonymous
> несопоставимых > несколько КБ 🤔
Anonymous
пасаны, в express-session указал secret, resave и saveUninitialized. все норм было. Потом подключил express-socket.io-session и в консоле начало выдавать что secret, resave и saveUninitialized не объявлены. Кто нить сталкивался?
KlonD90
Ну и дефолтная библиотека в Js лучше чем в go
Aleksand
Но она как бы это сказать делает за счет типизации это.
ну вот нет, стандартная либа и библиотека сторонняя написаны на одном языке у них равные возможности. вопрос в алгоритме.
Vladimir
Секрет просто - в Go просто плохая стандартная реализация
Aleksand
Ты читаешь что я пишу?
да, кто там выигрывает за счет типизации?
Vladimir
О какой реализации в Go речь, для начала?
Aleksand
Секрет просто - в Go просто плохая стандартная реализация
не оптимальная, ровно как и в V8, но во втором случае что-то сделать сильно сложнее чем в первом
KlonD90
Секрет просто - в Go просто плохая стандартная реализация
Ну и это тоже. Но там выигрыш за счет того что они знают схему того что придет и все готово заранее. В принципе в Js вряд ли будет особый прирост поэтому поводу так как и приведение не нужно
Vladimir
Сложно утверждать, что в V8 не оптимальная реализация