- 论坛徽章:
- 0
|
今天把nginx server的memory pool的方式,模仿实现了一遍,用于自己的一个项目,简单测试,感觉memory pool,速度优势没有想象的大。在一台服务器上测试,分配10240000个128bytes块内存,以10M为一个预分配块(如果预分配块为1k,性能比直接用malloc还差),并自动grow,用memory pool的方式大概用了1秒,直接用malloc然后free,大概用了4秒。由于限制字数的,全部代码是发不上来的,郁闷。#include "mem_pool.h"
#define CNT 12400000
char *addr[CNT];
int main(void)
{
int i;
struct _mem_pool *p;
time_t last, cur;
last = time(NULL);
p = create_mem_pool(102400);
for (i = 0; i < CNT; i++) {
addr[i] = mem_pool_alloc(p, 128);
}
destroy_mem_pool(p);
p = NULL;
cur = time(NULL);
printf("[%d]\n", cur - last);
last = time(NULL);
for (i = 0; i < CNT; i++) {
addr[i] = malloc(128);
}
for (i = 0; i < CNT; i++) {
free(addr[i]);
}
cur = time(NULL);
printf("[%d]\n", cur - last);
return 0;
}
|
[ 本帖最后由 rocenting 于 2009-11-9 00:24 编辑 ] |
|