Таймураз
Работай лучше в главном процессе
Таймураз
И если важна скорость, асинки убери
Sheldhur
ну это всё пробрасывать
Таймураз
Несложно же
Sheldhur
без асинков рендер виснет и не реагирует ни на что
Таймураз
Перепиши на промисы
Sheldhur
а почему в мейнпроцессе должно быть лучше?
Таймураз
Точно не знаю, но что-то мне подсказывает, что работать в фоновом процессе лучше, чем в браузерном потоке
Sheldhur
не быстрее
Dmitry
вставка 4320 срок в sqlite c# 1.81 сек js 175.69 сек это нормально?
А попробуй вставлять не по одной записи, а сразу пачкой.
Sheldhur
sqlite не умеет пачкой, только через транзакцию если
Dmitry
Я правда не уверен что sqlite так умеет
Dmitry
Ну значит через транзакцию :)
Sheldhur
ну это не особо поможет, имхо
Dmitry
Может в шарпе через транзакцию идет по умолчанию
Sheldhur
что-то другое сжирает скорость
Dmitry
Пробовать надо, не знаю как драйвер под капотом работает. В обычных бд пачкой всегда прилично быстрее
Sheldhur
мб sequelize на столько слоупочный
Dmitry
Нормальный он, тут же чистый запрос. Я так по миллиону записей гоняю и все шустро
Dmitry
Попробуйте все же через транзакцию данные записать, если не поможет будем думать
Sheldhur
да ну не, в c# без транзакций же
Sheldhur
ща попробую
Андрей
В електроне если делать через рендер процесс то будет медленней. Там под капотом чтото типа рпц. Надо из мейн процесса выполнять ) (код не зырил)
Dmitry
Прототипное наследование
Не то. Видимо не правильно описал задачу. Есть некий сервис который использует настройки, которые может поменять другой сервис (property)
Dmitry
И эти property можно менять не перезагружая никакой процесс (они должны отлавливать изменения и что-то у себя обновлять) или там процессы протекают по таймеру и новые значения в property подхватятся при слудующем тике
Dmitry
redis pubsub?
Ну эт понятно. Есть готовые решения?
Vint
Ну эт понятно. Есть готовые решения?
ioredis как драйвер и подключение к одной редиске (или кластеру)
Dmitry
Я уже вчера запилил свой костыль на монго+rabbitmq
Vint
Ну, кролик не совсем для этого, мне кажется.
Dmitry
Ну у меня просто редиса пока нет в проекте, из-за одних proprty его ставить не вар
Vint
Или вот попробуй, я всё ленюсь https://github.com/RIAEvangelist/node-ipc
Dmitry
Ща гляну. Спасибо
Vint
Ну у меня просто редиса пока нет в проекте, из-за одних proprty его ставить не вар
Ну, получается, что это важная часть системы (свойства эти и настройки). А значит надо пилить нормальное решение).
Vint
Крутая штука
Есть опыт в продакшене?
Vint
Вот сравнение интересное https://60devs.com/performance-of-inter-process-communications-in-nodejs.html
Dmitry
Или вот попробуй, я всё ленюсь https://github.com/RIAEvangelist/node-ipc
Классная штука, но по факту, тоже самое что я сделал. Только у меня они еще и сохранятся в бд. А тут нет. Больная скорость не нужна, кролика заглаза хватит.
Dmitry
Это что-то типа конфига, которых хранится в бд
Vint
Ну, как вариант. Сохранение в БД - это делается инициатором события, к рассылке не относится же.
Vint
Я понимаю. У самого такое есть)
Dmitry
Эт тоже верно
Vint
Если БД постгрес, то можно ещё его нативным notify воспользоваться. Но он дико куцый.
Dmitry
Запилю модуль для этого всего.
Dmitry
Если БД постгрес, то можно ещё его нативным notify воспользоваться. Но он дико куцый.
Вот как раз ipc отличный вариант для случая когда БД без событийное и нет ни редиса ни кроликов
Vint
Вот как раз ipc отличный вариант для случая когда БД без событийное и нет ни редиса ни кроликов
Ну да, но надо попробовать, как оно в реальности будет. И, желательно, на более мощных задачах, чем синхронизация конфигов)
Dreamerinnoise
что есть рпц?
https://en.wikipedia.org/wiki/Remote_procedure_call
Sheldhur
ну вообще в рендер sequelize подрубается через require(electron).remote.require('sequelize'), это как раз через ipc и работает, так что sequelize по сути в мейн процессе вертится
Sheldhur
если я всё правильно понял
Orion
Всем привет!
Андрей
Надо проверять я тебе такое не подскажу) -- сам хз Имхо лучше бы ты просто данные передавал в мейн процесс , через коллбеки. Но это только предположение что так будет лучше
Sheldhur
да и пробовал я прямо в мейн процессе, быстрее не стало
Дмитрий
всем привет. может кто подсказать что? недавно обновили nodejs с 4 до 6 версии, теперь при запросах к серверу валится следующая ошибка: (node:6884) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejec tion id: 17): TypeError: Cannot read property '15' of undefined
Андрей
Хм транзакции тогда крути)
Дмитрий
как её правильно попраить?)
Андрей
как её правильно попраить?)
Я бы в гугл полез. Но возможно после обновления ноды надо ещё глобальные пакеты переустановить
Андрей
Ну да туь явно проблема с реджекшином). Можно попробовать отдебажить
Андрей
Запусти вот так node --inspect myapp.js появится ссылка. Открой в браузере и дебаж
Дмитрий
хочу понять, почему приходит reject, когда промис возвращает resolve
Таймураз
У тебя где-то ошибка проскакивает, она потом реджект вызывает у промиса
Sheldhur
Хм транзакции тогда крути)
с транзакиями чёт не получается, вроде всё так делаю, а пишет верните промис и роллбек делает, но судя по времени занимает столько же
Vint
с транзакиями чёт не получается, вроде всё так делаю, а пишет верните промис и роллбек делает, но судя по времени занимает столько же
Может всё-таки пачкой лить? http://stackoverflow.com/questions/1609637/is-it-possible-to-insert-multiple-rows-at-a-time-in-an-sqlite-database/1609688#1609688
Sheldhur
может драйвер кривой? я брал sqlite-offline, там для всех платформ есть собранные, а в sqlite версия ноды неподходит, а под виндой не собирается
Vint
может драйвер кривой? я брал sqlite-offline, там для всех платформ есть собранные, а в sqlite версия ноды неподходит, а под виндой не собирается
Не знаю, у меня давно была задача (на винде как раз). Этот драйвер работал нормально https://www.npmjs.com/package/sqlite Лил в БД со скоростью hdd, т.е. всё упиралось только в него.
Sheldhur
ну теперь не работает :)
Sheldhur
теперь ручками надо собирать
Vint
И как раз через nwjs всё крутилось. Почти электрон)
Vint
ну теперь не работает :)
Ради интереса попробовал сейчас - встало за 10 секунд.
Vint
Они же там хитро берут пребилды с remote. Может не для всех windows оно готовое лежит.
Sheldhur
Sheldhur
нужен v53, в sqlite только v51
Sheldhur
да и чёт сильно сомневаюсь что в драйвере проблема
Vint
У меня сейчас собралось node-v51-win32-x64
Sheldhur
51 не подходит
Sheldhur
как собирал?
Vint
Не собирал, оно пребилд бинарника стянула из сети само.