llvm-mca 也可以试试,它和 uiCA 的模拟结果有一些区别。 goldbolt.org 已经把它集成进去了,使用的时候记得加上 -mcpu=xxx 参数指定 CPU(默认 native 而 goldbolt.org 有多台不同配置的机器)和 -timeline 参数打开流水线可视化。
要注意的是,这类工具无法模拟访存延迟(不知道会在哪一级缓存)和分支(不知道是否跳转)。当需要考虑这些因素的时候,还是得实际运行并且使用 perf 进行分析。
对于 ILP 优化感兴趣的,也可以看一看 algorithmica 里面的第三章节。还有一个我觉得不错的案例:ska sort,一种优化过后的 in-place radix sort。
要注意的是,这类工具无法模拟访存延迟(不知道会在哪一级缓存)和分支(不知道是否跳转)。当需要考虑这些因素的时候,还是得实际运行并且使用 perf 进行分析。
对于 ILP 优化感兴趣的,也可以看一看 algorithmica 里面的第三章节。还有一个我觉得不错的案例:ska sort,一种优化过后的 in-place radix sort。