私はいくつかのコードを最適化しようとしています。それは単純に見えますが、私に苦労しています。したがって、基本的に、0より大きい場合は、数値を1にしようとしています。問題は、比較を使用したくないということです。比較は非常に高価であり、比較なしで解決策を取得すると節約できるからです。それがたくさん呼ばれるようになるので40秒。だから私が欲しいのはビット単位の演算子、足し算、引き算、割り算、掛け算だけです。
追加:数は1または2になります。
タイプはunsignedintです。
完全なアルゴリズム:
DWORD num = (blockNum / 0xAA) * blockStep[0];
switch (blockNum / 0xAA)
{
case 0:
return num + hashOffset;
default:
num += ((blockNum / 0x70E4) + 1) << (BYTE)packageSex;
switch (blockNum / 0x70E4)
{
case 0:
return num + hashOffset;
default:
return num + (1 << (BYTE)packageSex) + hashOffset;
}
}