Vlad
Artur
Речь идет о сервере.
Artur
Проработав около 10 лет с PHP у меня как-то представление о тормознутости иное. Это что-то вроде "рендер страницы на сервере 600ms долгоооо".
Artur
О каких высоконагруженных частях идет речь? На клиенте?
Не на всех клиентах можно использовать нативные промисы.
Vlad
Речь идет о сервере.
А зачем на сервере компилять в while true, если можно компилять в генераторы?
Vlad
https://github.com/petkaantonov/bluebird/tree/master/benchmark
А есть хоть одно реальное приложение, где промисы что-то тормозят?
Vlad
Без понятия зачем babel это делал таким образом.
Потому что это дефолтное поведение для поддержки старых браузеров. Подрубаешь плагин и компилится в генераторы
Nikita
блин) Я про то, что если while(true) вас напрягает - как могут не напрягать тормознутые промисы
Artur
блин) Я про то, что если while(true) вас напрягает - как могут не напрягать тормознутые промисы
Меня теперь напрягает. Но трогать проект с ним пока не буду.
Nikita
Nikita
вот прогнал сейчас бенчмарк
Artur
promises-then-promise это нэйтив?
Nikita
ой не, глупость написал)
Nikita
и тут глупость
Nikita
promises-ecmascript6-native.js - вот нативные
Artur
сейчас тоже попробую
Roman
что плохого в while(true) {} ?
Roman
любой event loop так работает
Nikita
v8 такой код не оптимизирует, вроде
Nikita
сейчас тоже попробую
npm i && ./bench doxbee
Vlad
Начал смотреть в код бенчмарков блюберда. Глаза вытекают, они всюду глобальные переменные юзают
Vlad
Откуда здесь берутся parallelQueries? https://github.com/petkaantonov/bluebird/blob/master/benchmark/madeup-parallel/promises-bluebird.js
Nikita
все что я могу сказать - автор признаный perf задрот, у него есть неплохая статья про производительность в v8
Vlad
Помимо перформанса код еще поддерживаемым должен быть, мы же не на олимпиаде
Nikita
https://github.com/petkaantonov/bluebird/blob/5bffd55f20f1df5361603612867f286fa13e56e3/benchmark/performance.js#L37
Nikita
это бенчмарк и это опенсорс) Возможно сделай он по другому - это влияло бы на перфоманс)
Gregory
что плохого в while(true) {} ?
плохого ничего нет, если это не приложение под нагрузкой
Gregory
из-за этого на фронте
Gregory
это норм, на беке, смотря для каких целей и нагрузки
Artur
Какой-то бесконечный бенчмаркинг
Vlad
это бенчмарк и это опенсорс) Возможно сделай он по другому - это влияло бы на перфоманс)
И как бы это вляло на перформанс если бы он заранее рекваерил?
Nikita
10к раз все тесты запускаются)
Artur
10к раз все тесты запускаются)
Я уже понял, поэтому запустил на сервере.
Artur
Nikita
И как бы это вляло на перформанс если бы он заранее рекваерил?
я не задрот перфоманса. Мне просто нравятся быстрые, более полные функционально решения. Поэтому мне нравится bluebird.
Nikita
2 скрина бенчмарков как бы это все подтверждают)
Artur
Сейчас еще на 6-й ноде попробую.
Artur
А то тоже как-то уныло
Vlad
Я лично верю что блюберд быстрее, мне интересно как это возможно
Artur
А чего тогда node team bluebird не взяли в качестве нативной либы?
Roman
@AGambit на сколько понимаю, дело не в while(true){}, а используется ли эффективно event loop
Nikita
ага, там 5 v8, вдруг они улучшили) А хотя погодите... нет)
Gregory
да
Gregory
и просто в расходе памяти на это
Vlad
Есть подозрение, что блюберд не по спеке работает и в том же тике промис резолвит
Nikita
на сколько я знаю node вообще ничего из стандартной библиотеки, кроме таймеров не переопределяют
Nikita
плюс в ядре ноды нет промисов
Nikita
я имею ввиду они не используются
Nikita
поэтому ноде и нет смысла их переопределять
Nikita
все по спеке)
Artur
Так насколько я знаю, promise на самом же JS написан
Nikita
+ туча удобных методов вроде map/filter/each/get/spread/etc.
Nikita
вот именно это и удручает) как команда v8 умудряется так писать - не понятно
Artur
Потому что смузи, ковокинг и все вот это)
Vlad
Можете у славы егорова в твиторах спросить почему нативные промисы медленнее
Nikita
и вишенка - у метода map есть concurrency опция. Чтобы не 1000 запросов слать, а по 5. как queue в async, или как-то так
Artur
Смарите, смарите, это 6-я нода
Nikita
мне вполне понятен ответ Листочкина. Сначала они делают 100% покрытие es2015, а потом работают над перфомансом
Artur
callback'и наше усе!
Nikita
34% оверхеда на async/await относительно колбэков. Мне кажется это очень неплохо)
Artur
Наконец забенчилось на локалке
Nikita
убедил?)
Artur
Ну практически. Если я правильно посчитал, то 100 нейтив промисов это около 10ms (если брать серверный результат бенча). Что как-то огорчительно для меня :(
Artur
А я тоже иногда люблю позадротстсовать с циферками...
Oleg
хэй, час, а я правильно понял, что в следущем LTS ноды будет async/await?
Oleg
интересует "точно"/"не точно"
Denis
Следующий LTS = 6, а пока еще в 6 нет их (так что совсем не точно)
Oleg
прочитал про осень что-то
Nikita
По идее там lts через 1 мажорный идут. То есть 4,6,8
Nikita
Так что в след мажорном, видимо. Но не лтс
Vladimir
ES Modules, async/await в Chakra https://twitter.com/MSEdgeDev/status/732616955560005634
Vladimir
У меня в связи с этим два вопроса. Когда нам ждать ES Modules в v8? Кто то пытался использовать node на chakra?
Andrey
и как там реализованы es modules ? как они грузятся?
Vlad
@vmakhaev Разве ядро ноды абстрагировали, чтобы она могла использовать и чакру, и v8?