コンピュータ科学におけるホットスポットとは、通常、コンピュータプログラムの中で実行される命令の割合が高い領域、またはプログラムの実行中に最も多くの時間が費やされる領域として定義されます(命令によっては実行速度が異なるため、必ずしも同じではありません)。
プログラムがランダムに中断された場合、プログラムカウンタ(次に実行される命令へのポインタ)には、特定の範囲内の命令のアドレスが含まれていることがよくあります。これは、最適化が必要なコードが存在する可能性、あるいは「タイトな」 CPUループが存在する可能性を示唆している可能性があります。この単純な手法でも、使用頻度の高い命令を検出できますが、命令セットシミュレータやパフォーマンスアナライザなどのより高度な手法の方が、より正確かつ一貫して検出できます。
コンピュータ科学者のドナルド・クヌースは、1996年にドクター・ドブズ・ジャーナルのインタビューで、彼がジャンプトレースと呼ぶものに初めて遭遇した時のことを次のように語っている。
1960年代に、誰かが「ジャンプトレース」という概念を発明しました。これは、プログラムの機械語を変更して、次の分岐命令やジャンプ命令を変更して制御を維持する方法であり、各命令を1つずつ解釈してプログラムが逐次性から逸脱した箇所をファイルに記録するのではなく、プログラムをかなり高速に実行できるようにするものでした。このファイルを処理することで、プログラムがほとんどの時間を費やしている場所を特定できました。そこで、このソフトウェアが稼働し始めた初日、当時おそらくコントロールデータコーポレーションから提供されていたFortranコンパイラに適用しました。すると、そのコンパイラが時間の87パーセントをコメントの読み取りに費やしていることがわかりました。その理由は、あるコードシステムから別のコードシステムへ、さらに別のコードシステムへと変換していたためです。[ 1 ]
上記の例は、効果的なホットスポット検出は多くの場合反復的なプロセスであり、プログラムが適切に動作していると単純に受け入れるのではなく、常に実行すべきプロセスであることを示しています。不要な処理をすべて排除した後(例えば、埋め込まれたコメントをすべて削除するなど)、新しいランタイム分析によって、翻訳における「真の」ホットスポットをより正確に検出できます。ホットスポット検出が全く行われなかった場合、プログラムは必要以上に多くのリソースを消費し、おそらく何年もの間、多数のマシン上で、誰もそのことに気づかないままだったでしょう。
命令セットシミュレータを使用すると、特定の命令が実行されるたびにその回数をカウントし、画面表示、印刷されたプログラムリスト(命令パス全体の長さに対する回数や割合を含む)、または最も多くの命令が実行された場所を正確に示す別のレポートを作成できます。多くのマシンではほとんどの命令の実行タイミングが異なるため、これは(命令ステップの観点から)ホットスポットの相対的なビューを提供するにすぎません。それでも、これは頻繁に使用されるコードの尺度を提供し、アルゴリズムの調整時には非常に役立ちます。