たぶん、こんな使い方する人はいないんだと思いますが、悪いことしかないってことを確かめたかったので。
調べたのは性能です。ソースを見るとわかりますが、エラーなのかループの終了なのか判断できないため、使う人はいないと思います。
以下の2つの性能を比較しました。
例1)
// Horrible abuse of exceptions. Don't ever do this!例2)
try{
int i = 0;
while(true)
range[i++].climb();
}catch{ArrayIndexOutOfBoundsException e{
}
int i = 0;配列のサイズは100、試行回数は1万回。累積時間(ms)を計測した結果です。
while(range. length > i)
range[i++].climb();
例1 230ms
例2 2ms
こんなに差があるとは思ってなかったですが、100倍違います。
EffectiveJavaでは、現在のJVMを利用した場合は遅い。とか書いてありましたが、昔は早かったのでしょうか。
そうだとすると、悪い書き方をしたソースがあるかもしれないですよね....
この例だけでは言えませんが、正当な作り方をしておくと、のちのち性能が上がるかも知れない。
ということでしょうか。
その場しのぎのコーディングはやめようと思います。
0 件のコメント:
コメントを投稿