3
为什么malloc + memset比calloc慢?
众所周知,这与初始化分配的内存calloc不同malloc。使用calloc,将内存设置为零。使用malloc,不会清除内存。 因此,在日常工作中,我将其calloc视为malloc+ memset。顺便说一句,为了娱乐,我为基准测试编写了以下代码。 结果令人困惑。 代码1: #include<stdio.h> #include<stdlib.h> #define BLOCK_SIZE 1024*1024*256 int 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*256 int main() { int i=0; char *buf[10]; while(i<10) { …