我的问题是有关了解Linux perf工具度量标准。我做了一个优化与我的代码中的预取/缓存未命中相关,现在速度更快。但是,perf并没有告诉我(或者更确定地说,我不明白perf显示了我)。 回到它开始的地方。我做了一个调查,以便speed up random memory access using prefetch。 这里是我的程序做: 它同样采用了尺寸 的两个int缓冲区它读取一个接一个的第一缓
全部: 我有两段代码。第一个是: #include <iostream>
using namespace std;
static constexpr long long n = 1000000000;
int main() {
int sum = 0;
int* a = new int[n];
int* b = new int[n];
for
我正在学习缓存行,以及循环跨步对缓存的影响。我遇到了this页面,其中显示了循环与循环步幅的执行时间。根据基准,增加循环跨度会减少执行时间,这对我来说非常困惑。据我了解,如果缓存行是64字节,并假设如果在第一种情况下循环步长是1,这意味着循环顺序遍历数组元素,那么应该有最少的执行时间,因为16个整数(4byte x 16 = 64字节)被加载到缓存中。由于所有16个元素都被加载到同一个缓存行中,因