Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我应该忽略_u内置的u prefetch()函数还是替换它?_C++_Linux - Fatal编程技术网

C++ 我应该忽略_u内置的u prefetch()函数还是替换它?

C++ 我应该忽略_u内置的u prefetch()函数还是替换它?,c++,linux,C++,Linux,当我将代码从linux移植到win32时,它涉及到uu builtin_prefetch()函数 然后我发现,它的业务是预取缓存数据。 正如上面所说的:如果目标不支持数据预取,地址表达式将在包含副作用但不生成其他代码且GCC不发出警告的情况下进行计算 这意味着函数实际上可能什么都不做? 所以,如果我不考虑开销,我能忽略这个函数吗?vs2008中是否有类似的功能,我可以用它来替换它 void __builtin_prefetch (const void *addr, ...); 谢谢。如果您真的

当我将代码从linux移植到win32时,它涉及到uu builtin_prefetch()函数

然后我发现,它的业务是预取缓存数据。 正如上面所说的:如果目标不支持数据预取,地址表达式将在包含副作用但不生成其他代码且GCC不发出警告的情况下进行计算

这意味着函数实际上可能什么都不做? 所以,如果我不考虑开销,我能忽略这个函数吗?vs2008中是否有类似的功能,我可以用它来替换它

void __builtin_prefetch (const void *addr, ...);

谢谢。

如果您真的不需要它,请将其移除。显然,函数_builtin*仅用于GCC编译器。另一方面,如果你真的需要这个函数,你很可能不得不用你自己的等价函数来代替它

预取严格来说是为了性能,您可以忽略它

大多数情况下,现代处理器会检测对内存的访问模式,并在预期使用(硬件预取)之前推测性地预取数据。预取的原因是CPU比内存快得多,缓存未命中需要许多周期才能到达DRAM并获取数据。_builtin_prefetch是一种软件预取(如果您编译的目标机器支持它),它只是向硬件发出的一个提示,提示您以后可能需要该地址的数据,以便它启动内存请求并隐藏长延迟