go
Я Джастин
Nikita
thanks :)
Прочитайте правила, там сверху в @javascript_jobs есть. И вилка обязательна, а то удалят.
Igor
Джастин не переживай
Nataly
ixplo
есть идеи как сделать аналог setTimeout в js
ixplo
?
ixplo
слышал, что минимальный интервал разнится от браузера к браузеру
ixplo
мне надо 1мс у всех
Winni
Разнится, но для чего тебе аналог?
Igor
1 тысячная сек..для чего?
Igor
У кого есть опыт пикси?
Дима
Дима
Забудь
Дима
setTimeout в браузерах не бывает меньше 4 мс
Дима
Есть хаки с setImmediate
Igor
Во флэше не рекомендуется частота 20 мс
Igor
20 мм и быстрее
Igor
В джаваскрипт думаю тоже ограничения
ixplo
ixplo
Дима
Igor
Евгений
+1 тоже интересно куда такое может понадобиться
Winni
При вызове в сеттаймаут с любым временем, этот код выполнится уже позже всего остального. Больше 60фпс все равно не увидишь, для анимации 16мс это минимум.
ixplo
😬
Sergey
Дима
Ну с чем я уже несколько месяцев сижу))
⩔wein
больше интересно как
⩔wein
это консоль браузера?
Дима
В основном ноды, но это не сильно принципиально
⩔wein
у меня оно жутко тормозить начинало на очень скромных обьемах данных(
Дима
Началось всё с того, что я полторы недели искал плавующий баг авторизации, дико напоминавший race conditions
Дима
Починил его стерев один неудачный console.log))
Дима
Так я задумался над тем, что собственно вывод в консоль далеко не бесплатный и нужно это дело как-то оптимизировать
⩔wein
А вывод в консоль имеет функциональное значение?
⩔wein
Если нет есть всякие babel-plugin-transform-remove-console.
Дима
без него я не пойму что происходит) В сущности без него прогон теста вообще бесполезен
Дима
Мне бабель плагин не нужен, логгер имплементит спеку debug и посволяет включать только нужные саб-логи) Но их всё равно просто нереально дофига
⩔wein
Дима
console.log — задержка на 50-80 мс — вылетаешь за отведеный интервал для генерации ключа (тупо рассинхронизируешься по часам) — сервер твою авторизацию заворачивает
Дима
В итоге там сейчас убер-логгер)
Дима
У меня вообще сжатия нет
Дима
Более того, я даже перевел компиляцию в режим с async, чтобы не терять время и стэк в генераторах
Sergey
Дима
Ага
Дима
Самый люто дичайший момент был — когда у меня падала авторизация от того, что заменял промис на async 😵😵
Sergey
Winni
Дима
Это жесть, когда ты видишь фигню, которая просто не может происходить, но однако же ты её видишь своими глазами уже пол месяца
Дима
Winni
Дима
В итоге там сейчас убер-логгер)
Короче в логгере сейчас мемоизация мета-данных события, асинхронный вывод, задержка, чтобы не мешать обсчёту остальных данных и два уровня буферизации сообщений
Дима
Дима
У меня вообще транспиляция весьма слабая — убираю флоу типы, class props, object rest, конвертирую for of и const в var
ixplo
Winni
ixplo
Асинх
Winni
Сильный фронтенд для стабого бэкенда как по мне получился.
Winni
Ха, у меня скорость загрузки со стима режется скоростью записи на диск
Дима
Дима
Я именно для этого дважды буферизирую массив сообщений перед записью, чтобы обработка данных была как можно дальше от критичных вычислений
Sergey
Дима
Фактически, это своего рода низкий приоритет
Sergey
Дима
ну у меня не совсем нодовский проект 😅 Но я просто решил что вертел всех тех, кто пытается запустить такие штуке на допотопных нодах и браузерах)
Sergey
Alex
вынеси логирование в воркер
Alex
ну а вообще звучит смешно - рассинхрон какой то при авторизации
Alex
если авторизация такой пиздец по процессу - делай ее блокирующей весь тред чо
Дима
По очереди с паузой между ними
Сообщения отправляются из вызовов логгера и собираются в первичный буфер, небольшой, на 50-100 сообщений, чтобы не сильно нагружать ноду непосредственно во время вызовов. После его заполнения он резко препроцессится весь, целиком в один проход, потому что так будет быстрее чем регулярно дёргать обработки по одной. После препроцессинга сообщения отправляются во вторичный буфер, большой, который очищается раз в пару-тройку секунд и так же резко производит вывод сразу пачкой, потратив на сотни сообщений всего одну итерацию вывода в консоль
Alex
как тебе выше сказали - по разным причинам фокус с вкладки уйдет и все ломаетс