[Из песочницы] Проверяем скорость работы промисов
В этой статье решил выложить довольно интересные, на мой взгляд, результаты бенчмарка собственного производства. Данный бенчмарк создан с целью выяснить скорость работы нативных и bluebird-промисов.
Исходный код бенчмарка:
Данный бенчмарк в качестве результата выводит время, за которое резолвятся все промисы. Результаты бенчмарка на моей машине:
Вывод: bluebird промисы работают быстрее нативных промисов в 2 раза.
Исходный код бенчмарка:
var Promise = require('bluebird'); // Если хотите проверить скорость работы нативных промисов то необходимо закомментировать данную строку.
var crypto = require('crypto');
var iterations = 1000000;
var start = Date.now();
var arrayPromises = [];
var promiseWrap = function () {
return new Promise(function (resolve, reject) {
crypto.randomBytes(256, (err, buf) => {
if (err) throw err;
resolve(buf);
});
});
};
for(var i = 0; i < iterations; i++){
arrayPromises.push(promiseWrap());
}
if(arrayPromises.length === iterations){
Promise.all(arrayPromises).then(function (result) {
var finish = Date.now()-start;
console.log("Бенчмарк промисов выполнен!");
console.log("Время выполнения "+finish/1000+" сек.");
});
}
Данный бенчмарк в качестве результата выводит время, за которое резолвятся все промисы. Результаты бенчмарка на моей машине:
Нативные промисы — 19.808 сек.
Bluebird-промисы — 9.654 сек.
Вывод: bluebird промисы работают быстрее нативных промисов в 2 раза.
Если я в чем то ошибаюсь, то большая просьба сообщить в комментариях. Буду очень рад услышать от вас, какие либо поправки.
» Ссылка на библиотеку bluebird
Комментарии (9)
31 августа 2016 в 17:20
0↑
↓
Про то как V8 оптмизирует код почитайте. Ваш бенчмарк совершенно некорректен.
31 августа 2016 в 17:20
0↑
↓
Спасибо за комментарий. Напишите, пожалуйста корректный бенчмарк. Очень хочется посмотреть на грамотную реализацию.31 августа 2016 в 17:40
0↑
↓
Зря накинулись:
http://programmers.stackexchange.com/questions/278778/why-are-native-es6-promises-slower-and-more-memory-intensive-than-bluebird
31 августа 2016 в 17:20
0↑
↓
Абсолютно бесполезный бенчмарк. Тестировать промисы нужно под асинхронной нагрузкой.31 августа 2016 в 17:21
0↑
↓
Можете привести пример?31 августа 2016 в 17:37
0↑
↓
Например: https://habrahabr.ru/post/307288/#comment_9739384
31 августа 2016 в 17:20
0↑
↓
впечатляет, а что на счет observble?31 августа 2016 в 17:40
0↑
↓
Неделю назад был статья JavaScript Performance, базы данных и поиски «серебряной пули»: видеозаписи ТОП-5 докладов HolyJS 2016
В ней есть видео на доклад Вячеслава Егорова, «Производительность JavaScript через подзорную трубу»
В данном докладе объясняется почему данный бенчмарк некорректен.И вот хорошая статься Что браузеры делают с вашим JavaScript-кодом: об оптимизациях в JS-движках на примере V8
31 августа 2016 в 17:45
0↑
↓
Бенчмарк поправил. Сейчас более корректно?