0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

地味なプログラム高速化 何度も読み出すプロパティや配列の値は一度変数に代入する

0
Last updated at Posted at 2025-12-01

この記事は株式会社シンプルウェイ Advent Calendar 2025の1日目の記事です。

地味ですが、普段のプログラミングで意識しておきたいパフォーマンスを考慮したコーディングを紹介したいと思います。

ベンチマークはJavaScriptで取っていますが、概ねどの言語にも通用するのではないかと思います。


何度も読み出すプロパティや配列の値は一度変数に代入したほうが処理は速いでしょう。

例えば、100個の要素がある配列を用意します。

var arr = [];
for (var i = 0; i < 100; i++) {
  arr.push(i);
}

個々の値に対してなにか処理をしたいとき、シンプルに書くと

for (var i = 0; i < arr.length; i++) {
  var a = arr[i]
}

のようになりますが、これだと arr.length をループのたびに読み出して、 i がその値以上になっていないかをチェックすることになります。

arr.length を一度変数に代入して

var l = arr.length;
for (var i = 0; i < l; i++) {
  var a = arr[i]
}

のように書くと速くなります。

とはいったものの、ベンチマークサイトで測ってもほんーーの少しの差しかありません。理論的にはループ回数が多くなればなるほど高速化に貢献するはずです。

同様に、配列の読み出しについても、何度も同じ値を読み出すのであれば、一度変数に代入したほうが速くなるでしょう。

var arr = [[[[1]]]];
var a = 0;
for (var i = 0; i < 100; i++) {
  a += arr[0][0][0][0];
}

よりも

var arr = [[[[1]]]];
var v = arr[0][0][0][0];
var a = 0;
for (var i = 0; i < 100; i++) {
  a += v;
}

のほうが速いです。理論的には配列のネストが深くなればなるほど高速化に貢献するはずです。なお、これもベンチマークサイトで測っても少しの差しかありません。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?