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

尽管我不了解向量/SSE 指令,但我发现有时查看生成的代码表明编译器知道最佳机器代码,并且您会发现它已经生成了您希望的内容。值得看看生成的代码来看看。

于 2013-02-28T23:50:09.390 回答
0

使用memset. glibc 将为您进行优化。如果你认为你可以做得更好,你应该向邮件列表提交一个补丁。

此外,“指令速度”不太可能是这里的瓶颈。这可能是内存带宽。不幸的是,除了“减少对内存的读写”之外,没有降低它的灵丹妙药。

于 2013-03-01T00:30:05.857 回答