主要内容:cache的特性
#include <stdio.h>
#include <stdlib.h>
#define DUMBCOPY for(i = 0; i< 65536; i++)\
destination[i] = source[i];
#define SMARTCOPY memcpy(destination, source, 65536)
int main()
{
char source[65536],destination[65536];/* source和destination都是用同一cache行的特殊情况下,会导致每次对内存的引用都无法命中cache,降低CPU利用率*/
int i,j;
#if 0
for(j = 0; j < 100; j++)
DUMBCOPY;
#else
for(j = 0; j < 100; j++) /* 这个比上面执行要快些,因为memcpy是经过特别优化的,先读取一个cache行再对它进行写入*/
SMARTCOPY;
#endif
return 0;
}
输出:
其中:
real为程序执行时间:从执行命令开始到程序结束
user为用户空间执行时间
sys为内核空间执行时间