私はそのフレーズをよく聞いた。どういう意味ですか?
例が役立ちます。
から ウィクショナリー :
ケース1の場合、おそらく次のようになります。
for (unsigned int i = 0; i < 0xffffffff; ++ i) {}
このフレーズは一般的に、何度も繰り返され、プログラムのパフォーマンスに重大な影響を与える可能性のあるループを指定するために使用されると思います。つまり、多くのCPUサイクルを使用する可能性があります。通常、このフレーズは、最適化の説明で聞きます。
たとえば、ループが画面上のすべてのピクセルを処理する必要があるゲーム、またはループがデータポイントの巨大な配列のエントリを処理する科学アプリについて考えます。
ビデオにタイトなループ(〜無限ループ)の良い例があります Jon Skeet and Tony the Pony 。
例は次のとおりです。
while(text.IndexOf(" ") != -1) text = text.Replace(" ", " ");
これは、IndexOf
がUnicodeのゼロ幅文字を無視する(したがって、2つの隣接するスペースを見つける)ため、タイトなループを生成しますが、Replace
はそれらを無視しません(したがって、隣接するスペースを置き換えません)。
他の答えにはすでに良い定義があるので、それらについては再度触れません。
タイトループは、CPUキャッシュフレンドリーなループです。これは、命令キャッシュに収まるループであり、分岐を行わず、処理中のデータのメモリフェッチレイテンシを効果的に隠します。
SandeepJの答えは、パケットを処理するネットワークアプライアンス(例、middleboxのWikipediaエントリを参照)のコンテキストでの正しい答えです。タイトループを実行しているスレッド/タスクが単一のCPUでスケジュールされたままであり、コンテキストが切り替えられないようにしようとすることを付け加えたいと思います。
Websterの辞書によると、「他のプログラムやオペレーティングシステムにリソースを解放せずに実行されるコードのループ」。
http://www.websters-online-dictionary.org/ti/tight+loop.html
経験から、無期限に実行されるループを実行しようとしている場合は、たとえば次のようなことに気づきました。
while(true)
{
//do some processing
}
このようなループは、常にリソースを大量に消費する可能性があります。このループを使用してプロセスによるCPUとメモリの使用状況を確認すると、問題が発生していることがわかります。これは、一部の人が「タイトループ」と呼ぶアイデアです。