var r = 500; var x,y; for (x = 0; x < r; x++) { for (y = 0; y < r; y++) { } } よりも x = r; while (x-- > 0) { y = r; while (y-- > 0) { } } のほうが早い。 前のやつが985ms後のやつが500msだった。whileで書いたほうが圧倒的に早いけど、じゃあwhileでかくべきかというとバランスの問題。 ループの真ん中に演算を入れる。 while (x-- > 0) { y = r; while (y-- > 0) { area++; } } これで1032msになる。areaを1回インクリメントするだけでfor/whileで得した分は吹き飛ぶので、ループの中身を何とかするほうが先。