为什么malloc+memset比calloc慢?大家都知道calloc与malloc它初始化分配的内存。带着calloc,内存设置为零。带着malloc,内存未清除。所以在日常工作中,我认为calloc如malloc+memset..顺便说一句,为了好玩,我为基准测试编写了以下代码。结果令人困惑。代码1:#include<stdio.h>#include<stdlib.h>#define BLOCK_SIZE 1024*1024*256int main(){
int i=0;
char *buf[10];
while(i<10)
{
buf[i] = (char*)calloc(1,BLOCK_SIZE);
i++;
}}守则1的输出:time ./a.out
**real 0m0.287s** user 0m0.095s sys 0m0.192s代码2:#include<stdio.h>#include<stdlib.h>#include<string.h>#define BLOCK_SIZE 1024*1024*256int main(){
int i=0;
char *buf[10];
while(i<10)
{
buf[i] = (char*)malloc(BLOCK_SIZE);
memset(buf[i],'\0',BLOCK_SIZE);
i++;
}}守则2的输出:time ./a.out
**real 0m2.693s** user 0m0.973s sys 0m1.721s顶替memset带着bzero(buf[i],BLOCK_SIZE)在代码2中产生相同的结果。我的问题是:为什么malloc+memset比calloc?怎么能calloc这么做?
- 3 回答
- 0 关注
- 1061 浏览
添加回答
举报
0/150
提交
取消