Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.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++ 如何减少指令缓存导致的程序性能差异?_C++_C_Gcc_Clang - Fatal编程技术网

C++ 如何减少指令缓存导致的程序性能差异?

C++ 如何减少指令缓存导致的程序性能差异?,c++,c,gcc,clang,C++,C,Gcc,Clang,我正致力于优化一个程序,并在代码中进行一些微不足道的更改(例如,添加一个从未运行过的if-else分支)这将导致代码性能出现2-3%的差异,我有理由相信这是因为额外的程序集在缓存线周围移动热函数会由于指令缓存而改变程序的性能特征。这使得很难衡量使代码速度提高1%的优化 您对如何在分析时最大限度地减少这种差异有什么建议吗 例如,任何在函数之间添加大量填充并将其与缓存线对齐的clang/gcc标志?您确定,这是由于指令缓存,而不是因为if/else语句阻止了某些编译器优化。你比较过汇编代码的相关部分

我正致力于优化一个程序,并在代码中进行一些微不足道的更改(例如,添加一个从未运行过的if-else分支)这将导致代码性能出现2-3%的差异,我有理由相信这是因为额外的程序集在缓存线周围移动热函数会由于指令缓存而改变程序的性能特征。这使得很难衡量使代码速度提高1%的优化

您对如何在分析时最大限度地减少这种差异有什么建议吗


例如,任何在函数之间添加大量填充并将其与缓存线对齐的clang/gcc标志?

您确定,这是由于指令缓存,而不是因为if/else语句阻止了某些编译器优化。你比较过汇编代码的相关部分吗?另外,我不知道添加填充是否会对您有所帮助,因为这会使其他更改的效果在实际应用程序中无法表示。显示最少的代码量。哪个处理器?你要深入到并非所有处理器类型都通用的细节或专业化。“衡量使代码快1%的优化”听起来很绝望。@Dieter:嗯,如果你在谷歌或Facebook上处理一段关键的代码,这可能是相关的。。。但我同意。