程序猿之---C语言细节23(cache的特性)

主要内容: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为内核空间执行时间


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值