このセクションでは、一般ハードウェアカウンタを使用して、関数で実行される命令数を確認する方法を示します。
「概要」ページを選択し、「一般ハードウェアカウンタ」の下にある「命令の実行」という名前の「HW カウンタプロファイリング」メトリックを有効にします。
「関数」ビューに戻り、「名前」列見出しをクリックして、アルファベット順でソートします。
下にスクロールして、compute()、computeA()、computeB() などの関数を探します。
computeB() および computeF() を除くすべての関数で、「排他的 CPU 合計時間」および排他的命令の実行の数値がほとんど同じです。
computeF() を選択して「ソース」ビューに切り替えます。computeF() をダブルクリックすると、ワンステップでこれを実行できます。
computeF() は計算カーネルが異なり、1 を加算するために関数 addone() を呼び出す一方で、ほかの compute*() 関数は加算を直接実行します。ほかの関数とパフォーマンスが異なっているのは、そのことが原因です。
「ソース」ビューを上下にスクロールして、すべての compute*() 関数を見てみます。
computeB() を含むすべての compute*() 関数が、ほとんど同じ命令実行数を示しています。その中で、computeB() は特異な CPU 時間コストを示しています。
次のセクションでは、computeB() の CPU 時間合計がそのような高値を示す理由を探ります。