LoginSignup
1

More than 5 years have passed since last update.

jsのオブジェクトのプロパティにアクセスするスピードを比べてみた

Posted at

偉い人のコードを読んでいると、オブジェクトのプロパティにアクセスする際に生存期間が短いところでもわざわざ変数を定義して参照しているケースがあったので、これはもしや速くなるのかということで試してみました。
リーダブルコード的には説明変数という意味もあるのかもしれませんが。
実行はchrome v.72です。

5回のプロパティへのアクセスを含むiterationを1000回回して経過時間を測りました。
それぞれ10回のtryの平均時間をconsole.logで出力します。

使ったコード
var domo = {hoge: 'unu'};
var count;
var times;
var start;
var results;

results = [];
for (times = 0; times < 10; times ++) {
  start = performance.now();
  for (count = 0; count < 1000; count++) {
      var hm = domo.hoge;
      hm + hm;
      hm + hm;
      hm + hm;
      hm + hm;
      hm + hm;
  }
  results.push(performance.now() - start);
}
console.log("var", results.reduce((a,c) => a + c, 0) / results.length);

results = [];
for (times = 0; times < 10; times ++) {
  start = performance.now();
  for (count = 0; count < 1000; count++) {
      domo.hoge + domo.hoge;
      domo.hoge + domo.hoge;
      domo.hoge + domo.hoge;
      domo.hoge + domo.hoge;
      domo.hoge + domo.hoge;
  }
  results.push(performance.now() - start);
}
console.log("prop", results.reduce((a,c) => a + c, 0) / results.length);

結果。一応早いぽい!


var 0.18199999998323618
prop 0.3185000000055879

var 0.18700000001117587
prop 0.24299999994691462

var 0.18299999996088445
prop 0.24899999992921948

念の為、プロパティへのアクセスを1行まで減らしてみましたが、これでも早いぽいです。


var 0.07450000003445893
prop 0.11049999992828816

var 0.06550000002607703
prop 0.11349999995436519

var 0.06550000002607703
prop 0.11349999995436519

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1