小编drc*_*cxd的帖子

为什么我的程序无法达到整数加法指令吞吐量上限?

我已阅读 CSAPP 3e 的第 5 章。我想测试一下书中描述的优化技术是否可以在我的计算机上运行。我编写了以下程序:

#define SIZE (1024)
int main(int argc, char* argv[]) {
  int sum = 0;
  int* array = malloc(sizeof(int) * SIZE);
  unsigned long long before = __rdtsc();
  for (int i = 0; i < SIZE; ++i) {
    sum += array[i];
  }
  unsigned long long after = __rdtsc();
  double cpe = (double)(after - before) / SIZE;
  printf("CPE is %f\n", cpe);
  printf("sum is %d\n", sum);
  return 0;
}

Run Code Online (Sandbox Code Playgroud)

据报道,CPE 约为 1.00。

我使用 4x4 循环展开技术转换程序,得到以下程序:

#define SIZE (1024)
int …
Run Code Online (Sandbox Code Playgroud)

c optimization assembly cpu-architecture microbenchmark

3
推荐指数
1
解决办法
110
查看次数