foreach ループはタイピングを減らし、読みやすくすることに同意します。
ちょっとしたバックアップとして、私は低レイテンシのアプリケーション開発に取り組んでおり、1 秒あたり 100 万パケットを処理する必要があります。100 万個のパケットを繰り返し処理し、この情報をリスナーに送信します。foreach ループを使用して、一連のリスナーを反復処理していました。
プロファイリングを行うと、 foreach ループを実行するために作成されたIterator オブジェクトがたくさんあることがわかりました。foreach ループをインデックス ベースの foreach に変換する no. GC の数を減らし、アプリケーションのスループットを向上させます。
編集:(混乱して申し訳ありませんが、このQをより明確にします)たとえば、リスナーのリスト(固定サイズ)があり、このforloopを1秒間に100万回ループします。foreachはJavaでやり過ぎですか?
例:
for(String s:listOfListeners)
{
// logic
}
に比べ
for (int i=0;i<listOfListeners.size();i++)
{
// logic
}
コードのプロファイリングされたスクリーンショット
for (int cnt = 0; cnt < 1_000_000; cnt++)
{
for (String string : list_of_listeners)
{
//No Code here
}
}