配列の中身をすべて取り出す時に…
//aは配列 for (var i=0, j=a.length; i < j; i++) { /*何かの処理..*/ }
という感じのイディオムがあるけど、これってどれくらい早いんだろう?
試しに計ってみました。 ><
コードはこんな感じです。
for1.js
#!/usr/bin/env js var a = []; var n = 1000000; for (var i=0; i<n; i++ ){ a[i] = i; }; for (var i=0; i<a.length; i++){ };
for1.js
#!/usr/bin/env js var a = []; var n = 1000000; for (var i=0; i<n; i++ ){ a[i] = i }; for (var i=0, j=a.length; i<j; i++){ };
結果
$ for i in for*.js; do echo $i; time js $i; done for1.js real 0m4.729s user 0m4.668s sys 0m0.056s for2.js real 0m4.302s user 0m4.212s sys 0m0.084s
10^6回のループだとこのような感じみたいです。