より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

Node.jsでパフォーマンス計測

Node.jsでパフォーマンス計測するには、以下のパッケージがあります。

www.npmjs.com

これにより、自分でDate.Nowなどを使って計測する必要はありません。

使い方もusage exampleのコードを見れば、計測したい処理をaddしていけばいいというのはわかると思います。

では、計測

ソースレビューで

for (var i = 0; i < 100000; i++) {
}

というコードに対して

var i ;
for (i = 0; i < 100000; i++) {
}

の方が速くない?という指摘が。

理屈としては変数をループごとに再定義するから前者の方が時間がかかるというのですが、さすがにそれは今のコンパイルが最適化してくれるのでは?と。

ただ、ここは推測するな、計測せよ、です。

指摘した人が自分で計測してましたが、これを私も計測してみます。

const Benchmark = require('benchmark');

const suite = new Benchmark.Suite;

const loop = 1000000;
// add tests
suite
    .add('out declare', function () {
        let i = 0;
        for (; i < loop; i++) {
        }
    })
    .add('inner declare', function () {
        for (let i = 0; i < loop; i++) {
        }
    })
    // add listeners
    .on('cycle', function (event) {
        console.log(String(event.target));
    })
    .on('complete', function () {
        console.log('Fastest is ' + this.filter('fastest').map('name'));
    })
    // run async
    .run({'async': true});

out declare x 1,745 ops/sec ±0.65% (93 runs sampled)

inner declare x 1,746 ops/sec ±0.56% (90 runs sampled)

Fastest is inner declare,out declare

結果としては大して変わらない、といったところですね。