[Из песочницы] Проверяем скорость работы промисов

В этой статье решил выложить довольно интересные, на мой взгляд, результаты бенчмарка собственного производства. Данный бенчмарк создан с целью выяснить скорость работы нативных и bluebird-промисов.
image


Исходный код бенчмарка:
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

    Бенчмарк поправил. Сейчас более корректно?

© Habrahabr.ru