|
发表于 2010-7-5 18:07:19
|
显示全部楼层
我写了一个测试用例,用以测试两种内存池,在单线程情况下的内存分配性能。
使用两种内存池分别分配1到1024字节,总计执行100次,也就是102400次内存分配与释放,共计两个用例。
每一种用例执行10次。
下面是测试结果
ACE_Cached_Allocator的时间是很稳定,而且基本上分配的时间开销在30ms左右
而ACE_Local_Memory_Pool的时间第一次分配时间开销较大这个可以理解,
之后释放重新分配时间逐渐减少,在第8,9,10次测试用例不再下降,基本上达到了一个平均值,
不过大概仍然是ACE_Cached_Allocator时间开销的2倍以上,当然这也大体符合预期。
begin Test nLoopA 100 nLoopB 1024 class ACE_Allocator_Adapter<class ACE_Malloc_T<class ACE_Local_Memory_Pool,class ACE_Thread_Mutex,class ACE_Control_Block> >
malloc count 0 ,cost 11844ms
free count 0 ,cost 125ms
malloc count 1 ,cost 1156ms
free count 1 ,cost 47ms
malloc count 2 ,cost 593ms
free count 2 ,cost 32ms
malloc count 3 ,cost 328ms
free count 3 ,cost 32ms
malloc count 4 ,cost 188ms
free count 4 ,cost 15ms
malloc count 5 ,cost 109ms
free count 5 ,cost 32ms
malloc count 6 ,cost 110ms
free count 6 ,cost 15ms
malloc count 7 ,cost 78ms
free count 7 ,cost 16ms
malloc count 8 ,cost 63ms
free count 8 ,cost 15ms
malloc count 9 ,cost 78ms
free count 9 ,cost 16ms
begin Test nLoopA 100 nLoopB 1024 class ACE_Cached_Allocator<char [1024],class ACE_Thread_Mutex>
malloc count 0 ,cost 32ms
free count 0 ,cost 0ms
malloc count 1 ,cost 31ms
free count 1 ,cost 16ms
malloc count 2 ,cost 15ms
free count 2 ,cost 16ms
malloc count 3 ,cost 15ms
free count 3 ,cost 16ms
malloc count 4 ,cost 32ms
free count 4 ,cost 0ms
malloc count 5 ,cost 32ms
free count 5 ,cost 15ms
malloc count 6 ,cost 15ms
free count 6 ,cost 16ms
malloc count 7 ,cost 15ms
free count 7 ,cost 16ms
malloc count 8 ,cost 31ms
free count 8 ,cost 0ms
malloc count 9 ,cost 32ms
free count 9 ,cost 0ms
[ 本帖最后由 modern 于 2010-7-5 18:09 编辑 ] |
|