linux malloc速度,性能 – memcpy()的速度受malloc()的不同方式的影响很大

我写了一个程序来测试memcpy()的速度.但是,如何分配内存会极大地影响速度.

#include

#include

#include

void main(int argc, char *argv[]){

unsigned char * pbuff_1;

unsigned char * pbuff_2;

unsigned long iters = 1000*1000;

int type = atoi(argv[1]);

int buff_size = atoi(argv[2])*1024;

if(type == 1){

pbuff_1 = (void *)malloc(2*buff_size);

pbuff_2 = pbuff_1+buff_size;

}else{

pbuff_1 = (void *)malloc(buff_size);

pbuff_2 = (void *)malloc(buff_size);

}

for(int i = 0; i < iters; ++i){

memcpy(pbuff_2, pbuff_1, buff_size);

}

if(type == 1){

free(pbuff_1);

}else{

free(pbuff_1);

free(pbuff_2);

}

}

操作系统是linux-2.6.35,编译器是GCC-4.4.5,选项“-std = c99 -O3”.

在我的电脑上的结果(memcpy 4KB,迭代100万次):

时间./test.test 1 4

real 0m0.128s

user 0m0.120s

sys 0m0.000s

时间./test.test 0 4

real 0m0.422s

user 0m0.420s

sys 0m0.000s

此问题与之前的问题有关:

UPDATE

原因与GCC编译器有关,我用不同版本的GCC编译和运行该程序:

GCC版本——– 4.1.3 ——– 4.4.5 ——– 4.6.3

使用时间(1)—– 0m0.183s —- 0m0.128s —- 0m0.110s

使用时间(0)—– 0m1.788s —- 0m0.422s —- 0m0.108s

看起来GCC越来越聪明了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值