3

x86 マシンの組み込み関数を使用して、次のコードを効率的に実行する必要があります。誰かが解決策を提案できますか?

uint64_t array[8];
array[0] = SOME_VALUE;
array[1] = SOME_VALUE;
array[2] = SOME_VALUE;
array[3] = SOME_VALUE;
array[4] = SOME_VALUE;
array[5] = SOME_VALUE;
array[6] = SOME_VALUE;
array[7] = SOME_VALUE;

連続した場所に同じ値が書き込まれるので、ベクトル/SSE組み込み関数が効率的にできるのであれば、それを試してみたいと思います。

4

2 に答える 2

0

を使用しmemsetます。glibc が最適化を行います。それ以上のことができると思われる場合は、メーリング リストにパッチを提出してください。

また、ここでのボトルネックはおそらく「命令速度」ではありません。おそらくメモリ帯域幅です。残念ながら、「メモリへの読み取りと書き込みを減らす」以外に、それを下げる特効薬はありません。

于 2013-03-01T00:30:05.857 に答える
0

ベクトル/SSE 命令についての知識はありませんが、生成されたコードを調べると、コンパイラが最適なマシン コードを認識していることがわかり、希望どおりのものが既に生成されていることがわかります。生成されたコードを見る価値があります。

于 2013-02-28T23:50:09.390 に答える