C ++程序员在尝试在缓存环境中优化代码时应该知道哪些基本提示和技巧?
这是需要考虑的事情:
例如,我知道减少函数的占用空间会使代码运行得更快,因为处理器的指令寄存器I中的总指令较少。
尝试分配std::array<char, <size>>
时,理想的大小可以使您的读写速度更快吗?
对象决定将它放在堆而不是堆栈上有多大?
答案 0 :(得分:1)
在大多数情况下,了解问题的正确答案后,您的整体表现会低于1%。
我想到的一些(数据)缓存优化是:
如果您真的想了解有关缓存的所有信息,请阅读What Every Programmer Should Know About Memory。虽然我不同意这个标题,但它是一篇非常深入的文档。
因为您的问题表明您实际上只是按照上述提示获得收益(在这种情况下您会感到失望),以下是一些常规优化提示:
提示#1:大约90%的代码应该针对可读性进行优化,而不是性能。如果您决定尝试优化性能,请确保实际测量增益。当它低于5%时,我通常会回到更易阅读的版本。
提示#2:如果您有现有的代码库,请先对其进行配置。如果您不对其进行分析,您将错过一些非常有效的优化。通常会调用耗时的函数,这些函数可以完全消除,或者结果缓存。
如果您不想使用分析器,至少在几个地方打印当前时间,或者使用调试器中断程序几次,以检查它最常花费时间的位置。