Проверяем скорость работы промисов

в 13:42, , рубрики: benchmark, bluebird, javascript, node.js, promise, promises, promises/a+, метки:

В этой статье решил выложить довольно интересные, на мой взгляд, результаты бенчмарка собственного производства. Данный бенчмарк создан с целью выяснить скорость работы нативных и 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

Автор: ruslangavrilov

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js