私が扱っているアプリケーションには、1 回の実行で 90% の確率で 1 つの分岐のみが実行されるという特性を持つ多数の if ステートメントがあります。
これで、次のようなことを行うことで、特定の CPU の単一の if ステートメントに対する分岐予測の影響をテストできます:-
#include <iostream>
#include <stdlib.h>
using namespace std;
int main() {
int a;
cin>>a;
srand(a);
int b;
long count=0;
for (int i=0; i<10000; i++) {
for (int j=0; j<65535; j++) {
b = rand() % 30 + 1;
if (b > 15) // This can be changed to get statistics for different %-ages
count += (b+10);
}
}
cout << count <<"\n";
}
私の質問は、特定の CPU の実際の大規模なアプリケーションで、複数の if ステートメントを使用して分岐予測のスケーラビリティと影響をテストする方法はありますか?
基本的に、分岐の予測ミスがさまざまな CPU にどれだけのコストをかけているか、およびそれらがアプリケーションに与える影響を把握できるようにしたいと考えています。