从今天开始, 我就要学习STL了, 希望自己能够坚持, 不要半途而废, 自己就是太多的半途而废了。 废话少说, 还是从侯捷的《STL 源码剖析》开始吧。
计划两天把第2章看完。第二章的主要内容是STL memory allocator, 其中比较有意思的部分是SGI default memory allocator 的设计,其思路是当所需memory小于128bytes时, 为了降低overhead, SGI STL 采用了memory pool的机制。
为了有个比较, 今天的工作是,当memory request 小于128 bytes, 检测一下malloc/free 的performance,明天我将测试一下SGI STL memory allocator的性能。
实验的步骤很简单, 固定memory allocation的次数(1000, 10000), 依次增加memory request 的大小, 从8 bytes -- 128 bytes, 看看malloc 和 free 总共所需的时间。
平台如下:
CentOS 5.2 Linux kernel 2.6.18-92.e15
CPU: Intel(R) Pentium(R) 4 CPU 2.40GHz
Memory: 2GB
图一, 是1000次 malloc/free 的时间 (毫秒)
图二, 是10000次 malloc/free 的时间 (毫秒)
好了, 明天把SGI STL memory allocator 完成, 然后看看, performance 到底有多少的提高。 希望有100%。 (哈哈)
10:57:58 PM Sunday, May 10, 2009