这实际上是一个2部分的问题: 对于想要挤压每个时钟周期的人,人们谈论管道,缓存局部性等. 我已经看到了这里和那里提到的这些低级别的性能技术,但我从头到尾都没有看到对该主题的
对于想要挤压每个时钟周期的人,人们谈论管道,缓存局部性等.
>我已经看到了这里和那里提到的这些低级别的性能技术,但我从头到尾都没有看到对该主题的良好介绍.任何资源建议? (谷歌给了我定义和论文,在那里我真的很感激某种有用的实例/教程真实的动手实物材料)
>一个人如何衡量这种事情?就像在某种形式的探查器中一样?我知道我们总是可以改变代码,回顾一下改进和理论,我只是想知道是否有成熟的工具.
(我知道算法优化是大小的顺序.我对这里的金属感兴趣)
回复的合唱是“不要过早优化”.正如你所提到的,你会从更好的设计中获得更多的性能,而不是更好的循环,你的维护者也会欣赏它.那说,回答你的问题:
学习装配.装配很多很多.当你可以换班时,不要以2的幂为MUL.了解xor的奇怪用法来复制和清除寄存器.具体参考,
http://www.mark.masmcode.com/和http://www.agner.org/optimize/
是的,您需要为代码计时.在* nix上,它可以像time {command;但你可能想要使用全功能的探查器. GNU gprof是开源http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html
如果这真的是你的事情,那就去吧,玩得开心,记住,很多很多位数学.你的维护者会讨厌你;)