【发布时间】:2017-01-14 23:07:21
【问题描述】:
我正在使用 perf 来测试一种理论上证明是缓存友好算法的代码。
根据this article 的说法,指令的缓存未命中是缓存性能的一个很好的指标。
缓存未命中与指令的比率将指示如何 缓存正常工作;比率越低越好。在这个 例如,比率为 1.26%(6,605,955 缓存未命中/525,543,766 指示)。因为成本差异比较大 RAM 内存和缓存访问之间(100 个周期 vs
但是当我像这样运行 perf 时:
perf stat -B -e cache-references,cache-misses,instructions ./td 1.txt 2.txt
Perf 将打印以下内容:
Performance counter stats for './td 1.txt 2.txt':
93,497,101 cache-references
56,452,246 cache-misses # 60.379 % of all cache refs
8,115,626,200 instructions
2.509309040 seconds time elapsed
因此,它更多地关注缓存引用与缓存未命中的比率,而不是文章中建议的比率。
缓存未命中与缓存引用的比率似乎非常糟糕,为 60%,这意味着在我的应用程序访问缓存的 60% 的时间里,我遇到了缓存未命中。另一方面,缓存未命中与指令的比率仅为 0.6%。
我不知道该怎么办。我应该优化哪个比率?
【问题讨论】:
标签: algorithm performance caching performance-testing