Locality」の日本語参考訳です。命令が必要とするデータがキャッシュにある場合、その命令は直ちに実行できます。ない場合、命令はメモリーから必要なデータが読み込まれるまで、実行を保留しなければなりません。メモリーからデータをコピーする操作はレイテンシーが長いため、データの局所性を活用するようにアルゴリズムとデータ構造を設計し、キャッシュミスを最小に抑えると良いでしょう。この記事では、データの局所性が低い場合の兆候、関連するパフォーマンス・ボトルネックの検出手法、問題の解決につながる最適化について説明します。プラットフォーム向けにマルチスレッド・アプリケーションを効率的に開発するための手法について説明します。背景データの局所性の問題とその影響を示す典型的な例として、行列乗算アルゴリズムが挙げられます。格納するアルゴリズムのシリアルバージョンから見てみましょう。これは、計算負荷の高いアルゴリズムの例です。大きなデータを操作する。このほかにも、外側のループの反復は独立しており、並列化の候補として最適と考えられる、といった特徴もあります。コンパイラーを使用しただけです)。大きな行列を使ってこの並列バージョンと最初のシリアルバージョンのパフォーマンスを比較したところ、実際には並列バージョンのほうが遅いことが分かりました。これは、高レベルの解析では問題の原因を特定できないケースの一例です。実行中のコンカレンシー・レベルが低いことは分かりましたが、その原因は分かりませんでした。コンカレンシー解析でもこれと同様の結果が得られるでしょう。パフォーマンス統計をタイムライン・ビューで表示することができるという特徴があります。タイムライン・ビューにより、実行時間全体を通してアプリケーションのワーカースレッドとその動作を確認することができます。時間が大量に消費されていることが判明しました。サポートされている低レベルのプロファイラーを実行することです。呼ばれる特殊なレジスターのサンプリングを行い、ハードウェア・イベントを収集することです。発生したらインクリメントするようにプログラムすることができます。プロセッサーはさまざまなイベントを生成します。グループだけを見ても、プロファイラーによって示された数値が実際にパフォーマンス低下の原因であるかどうかは明らかでないため、あまり役に立たない場合があります。通常、アプリケーションに特定のパフォーマンス問題が存在するかどうかを判断するには、適切なイベントと特定の式を組み合わせて使用する必要があります。始めると良いでしょう。複数のハードウェア・イベントを収集し、多数の式を使います。これは、アプリケーションにどのような問題が存在するかを把握するのに役立ちます。ハードウェア・イベントを収集し、いくつかの式を適用した結果のデータを示し、パフォーマンス問題の可能性がある数値をハイライトします。ヘルプを、簡単な説明はツールヒントを参照してください。