node.js 配列が結合できる「concat」と「スプレッド構文」のパフォーマンスを計測する

node.js  配列が結合できる「concat」と「スプレッド構文」のパフォーマンスを計測する

node.jsで、配列を結合する際に利用する「concat」と「スプレッド構文」のパフォーマンスを計測するサンプルコードを記述してます。nodeのバージョンは14.15.1を使用してます。

環境

  • OS windows10 pro 64bit
  • node V14.15.1

パフォーマンス計測

benchmarkを使用して、「concat」と「…」を使用して、配列を結合するコードを実行して、パフォーマンスを計測するサンプルコードとなります。

benchmarkインストール手順

npm i benchmark

サンプルコード

const Benchmark = require('benchmark');

const suite = new Benchmark.Suite;

// add tests
suite
    .add('concat', function() {
        let arr1 = [1, 2, 3];
        let arr2 = [4, 5, 6].concat(arr1);
    })
    .add('Spread', function() {
        let arr3 = [1, 2, 3];
        let arr4 = [4, 5, 6, ...arr3];
    })
    // add listeners
    .on('cycle', function(event) {
        console.log(String(event.target));
    })
    .on('complete', function() {
        console.log('パフォーマンスがいいのは ' + this.filter('fastest').map('name') + 'となります');
    })
    // run async
    .run({ 'async': true });

実行結果 (benchmarkを少しだけ日本語化してます)

concat x 4,839,622 回/秒 ±0.46% (89 runs sampled)
Spread x 19,496,693 回/秒 ±0.29% (91 runs sampled)
パフォーマンスがいいのは Spreadとなります

1秒間に実行できる回数をみると、断然Spreadで定義した方がいい結果になりました。