Script Preparation code:
x
 
function delay(ms, val = true) {
  let timeoutId;
  return new Promise(resolve => {
    timeoutId = setTimeout(() => resolve(val), ms);
  });
}
function runTest(resultFunc) {
    const res = resultFunc();
    for(let i=0; i<20; i++) {
        res.add(delay(i));
    }
    return res.get();
}
Tests:
  • Function based

     
    const createResultPromiseFunc = () => {
      let res = Promise.resolve();
      return {
        get() { return res; },
        add(nextPromise) {
          res = res.then(() => nextPromise);
          return this;
        }
      };
    };
    runTest(createResultPromiseFunc);
  • Array based

     
    const createResultPromiseArray = () => {
      const res = [];
      return {
        get() { return Promise.all(res); },
        add(nextPromise) {
          res.push(nextPromise);
          return this;
        }
      };
    };
    runTest(createResultPromiseArray);
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Function based
    Array based

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 4 years ago)
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0
Firefox 75 on Ubuntu
View result in a separate tab
Test name Executions per second
Function based 4942.2 Ops/sec
Array based 5790.7 Ops/sec