内存分配和首次访问

面向英特尔® MIC 架构的编译器方法

内存分配和首次访问

相对至强而言,协处理器的内存分配成本较高——因此尽可能重复使用已非配的内存是非常明智的。例如,如果某函数被重复调用(假设在循环内),并且该函数使用数组作为临时存储,尝试初次分配足够大的数组(所需的最大大小),并在后续调用中重复使用该数组:

static real *temp_array=0;

 

void foo(..) {

          ...

if (temp_array == 0) {
    temp_array = my_malloc(MAX_SIZE);
}

... // use of temp_array

}

同时请牢记在首次访问时 Linux 上的物理内存进行分配而不是在 malloc-point。因此如果您的循环遍历访问已分配内存但未访问的数组第一次迭代可能比其余迭代需要更长的时间。

 

Nähere Informationen zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.