為什么malloc+memset比calloc慢?大家都知道calloc與malloc它初始化分配的內(nèi)存。帶著calloc,內(nèi)存設(shè)置為零。帶著malloc,內(nèi)存未清除。所以在日常工作中,我認(rèn)為calloc如malloc+memset..順便說一句,為了好玩,我為基準(zhǔn)測試編寫了以下代碼。結(jié)果令人困惑。代碼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中產(chǎn)生相同的結(jié)果。我的問題是:為什么malloc+memset比calloc?怎么能calloc這么做?
為什么malloc+memset比calloc慢?
慕尼黑8549860
2019-06-18 16:09:18