私がやろうとしていることは、次のことを避けることです。
if(*ptr > 128) {
number = 5;
}
ブランチがどちらの方向に進むかについて明確なパターンがない場合、このようなコードのパフォーマンスは低下します。私が思いついたのはこれです:
int arr[] = { number, 5 };
int cond = *ptr > 128;
number = arr[cond];
私のテストに基づくと、入力がランダムな場合の条件付き実行の2倍以上の速度で実行されます。私が疑問に思っているのは、おそらくビット演算子を使用して、これを行うためのより賢い方法があるかどうかです。