Как стать автором
Обновить

Комментарии 16

Отвечая на вопрос статьи — я использую мат. прогрессии вместо переборов, примитивы вместо объектов (в данном случае речь не о JS) и алгоритмы, которые проверены временем. Обычно это дает достаточный результат.

Оригинал статьи активно редактируется в ответ на множественные поправки, в том числе от разработчиков V8. За процессами изменения можно следить в репозитории:


https://github.com/davidmarkclements/v8-perf


Обсуждение также ведётся в комментариях под оригиналом и репостом:


https://www.nearform.com/blog/node-js-is-getting-a-new-v8-with-turbofan/


https://medium.com/the-node-js-collection/get-ready-a-new-v8-is-coming-node-js-performance-is-changing-46a63d6da4de

Коленвал на КДПВ вроде как от V6, не?
V8 же, просто два противовеса маленькие ещё =)
НЛО прилетело и опубликовало эту надпись здесь
Почему for-in в 5.9 стал в четыре (!) раза медленнее, чем был в 5.8?
Кажется, разработчики вместо того чтобы ускорить Object.keys просто замедлили for-in. И теперь как-бы говорят нам: «вы же хотели чтобы Object.keys был с такой же производительностью что и for-in, вы это получили»
Интересно как обстоят дела у других движков?
Если JS-число (целиком) превышает 2147483647, JIT-компилятору приходится динамически менять базовый тип числового значения на тип с двойной точностью (с плавающей запятой)

Тут есть нюанс, например если взять очень большое число 9007199254740891 и прибавить к нему 1, мы получим как и ожидаем 9007199254740892, но если мы к нему прибавим 0.5, то в результате мы получим все те же 9007199254740891, а если 0.6, то результат будет, как вы вероятно уже догадались 9007199254740893. С этими большими целыми числами (от 2 в 32й до 2 в 53й степени — 1) есть еще нюанс, с ними не работают битовые операции, число будет усечено до 32х бит, например 2147483647 >>> 0 === 2147483647, а вот 9007199254740892 >>> 0 === 4294967196
не успел… не 9007199254740893, а 9007199254740892 конечно же

А WA решает проблему этой математики? Просто вроде именно там можно делать что хочешь, то есть по идее через wasm уже можно будет подзакинуть туда нормальный движок математический, если в v8 это дело не поправят...


Спасибо что указали на эту особенность, я конечно не использовал никогда js для математики, но теперь я буду знать, что его не стоит рассматривать в этом ракурсе.

Ограничение битовых операций 32 битами, конечно, очень раздражает. Понимаю оптимизация, но нельзя же отрезать такой функционал совсем — пусть медленнее, но работает. Уже не раз сталкивался, что не хватало.
Опять не увидел главной фразы любого поста про бенчмарки: «динамическая настройка частоты процессора была отключена»
Nodejs — это когда каждый из цилиндров двигателя работает по отдельности от остальных, независимо. А не так, как на заглавной картинке.
Это пока не зарелизится servo. Если у ребят получится то что они планировали, то нода помимо движка от мс начнёт поддерживать и автоматически распараллеливаемый код.
Servo — это только про рендеринг html/css.
JavaScript движок (SpiderMonkey) пока никто не переписывает на Rust и нет никакого автоматического распараллеливания https://github.com/servo/servo/wiki/Design#javascript-and-dom-bindings
Зарегистрируйтесь на Хабре, чтобы оставить комментарий