C++ 我应该忽略_u内置的u prefetch()函数还是替换它?
当我将代码从linux移植到win32时,它涉及到uu builtin_prefetch()函数 然后我发现,它的业务是预取缓存数据。 正如上面所说的:如果目标不支持数据预取,地址表达式将在包含副作用但不生成其他代码且GCC不发出警告的情况下进行计算 这意味着函数实际上可能什么都不做? 所以,如果我不考虑开销,我能忽略这个函数吗?vs2008中是否有类似的功能,我可以用它来替换它C++ 我应该忽略_u内置的u prefetch()函数还是替换它?,c++,linux,C++,Linux,当我将代码从linux移植到win32时,它涉及到uu builtin_prefetch()函数 然后我发现,它的业务是预取缓存数据。 正如上面所说的:如果目标不支持数据预取,地址表达式将在包含副作用但不生成其他代码且GCC不发出警告的情况下进行计算 这意味着函数实际上可能什么都不做? 所以,如果我不考虑开销,我能忽略这个函数吗?vs2008中是否有类似的功能,我可以用它来替换它 void __builtin_prefetch (const void *addr, ...); 谢谢。如果您真的
void __builtin_prefetch (const void *addr, ...);
谢谢。如果您真的不需要它,请将其移除。显然,函数_builtin*仅用于GCC编译器。另一方面,如果你真的需要这个函数,你很可能不得不用你自己的等价函数来代替它 预取严格来说是为了性能,您可以忽略它 大多数情况下,现代处理器会检测对内存的访问模式,并在预期使用(硬件预取)之前推测性地预取数据。预取的原因是CPU比内存快得多,缓存未命中需要许多周期才能到达DRAM并获取数据。_builtin_prefetch是一种软件预取(如果您编译的目标机器支持它),它只是向硬件发出的一个提示,提示您以后可能需要该地址的数据,以便它启动内存请求并隐藏长延迟