gpt4 book ai didi

c++ - _mm_sfence 与 __faststorefence

转载 作者:太空狗 更新时间:2023-10-29 23:07:36 26 4
gpt4 key购买 nike

根据 MSDN 文档,__faststorefence_mm_sfence 更快。在我的计时中,它慢了三倍以上。

平台:Win7-64、带有 x64 SDK 的 Visual Studio 2010。

#include <windows.h>
#include <xmmintrin.h>
#include <intrin.h>

int main(int argc, char* argv[])
{
int* x = new int;
__int64 loops = 1000000000; // 1 billion
__int64 start, elapsed;

start = __rdtsc();
for (__int64 i = 0; i < loops; i++)
{
*x = 0;
_mm_sfence();
}
elapsed = __rdtsc() - start;

std::cout << "_mm_sfence: " << elapsed << std::endl
<< "average : " << double(elapsed) / double(loops) << std::endl;

start = __rdtsc();
for(__int64 i = 0; i < loops; i++)
{
*x = 0;
__faststorefence();
}
elapsed = __rdtsc() - start;

std::cout << "__faststorefence: " << elapsed << std::endl
<< average : " << double(elapsed) / double(loops) << std::end;
}

结果:

  • _mm_sfence 平均值:5.7
  • __faststorefence 平均值:18.37

__faststorefence 生成 lock 或 DWORD PTR [rsp], ebp,其中 ebp 已异或为零,_mm_sfence 生成 sfence(不出所料)

MSDN docs for __faststorefence明确声明它比 _mm_sfence 快,所以要么我的测试错了,要么他们错了。有什么想法吗?

最佳答案

我使用提供的基准测试测试的 AMD 处理器显示 __faststorefence 是赢家。

Intel - _mm_sfence: 8.61, __faststorefence: 21.60
AMD 1 - _mm_sfence: 138.21, __faststorefence: 90.96
AMD 2 - _mm_sfence: 55.21, __faststorefence: 20.08

这是与 VS 2013 一起使用的。
_mm_sfence = sfence
__faststorefence = lock 或 dword ptr [rsp],esi

关于c++ - _mm_sfence 与 __faststorefence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12308916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com