malloc、calloc、memset与free等内存操作的速度
[| 2012/05/30 00:55]
一直对内存操作的速度没有数值概念,只泛泛的知道memset影响效率,反复分配释放内存影响效率,具体速度如何,从来没试过,今天试验了一下。
写了个程序,分配一个指针数组,挨个分配内存,然后挨个释放。使用的是一台2核16g内存的虚拟机。gcc版本3.4.2
先是分配了1w个100字节块,发现5ms以内即可完成。
然后扩大到500字节块,速度没什么变化。
然后分配100w个字节块,平均需要270ms左右。
字节块扩大的2k左右,大概5s完成。
扩大到5k左右,大概12s左右。
以上数据均为malloc+memset数据和calloc数据,两者不相上下。
只malloc不memset,大概能缩短20%左右,可见memset对速度还是有一定影响的,不过对于性能要求不是那么严苛的程序,设置一下提高程序稳定性也是值得的。避免某变量忘记初始化出现野值的问题。
写了个程序,分配一个指针数组,挨个分配内存,然后挨个释放。使用的是一台2核16g内存的虚拟机。gcc版本3.4.2
先是分配了1w个100字节块,发现5ms以内即可完成。
然后扩大到500字节块,速度没什么变化。
然后分配100w个字节块,平均需要270ms左右。
字节块扩大的2k左右,大概5s完成。
扩大到5k左右,大概12s左右。
以上数据均为malloc+memset数据和calloc数据,两者不相上下。
只malloc不memset,大概能缩短20%左右,可见memset对速度还是有一定影响的,不过对于性能要求不是那么严苛的程序,设置一下提高程序稳定性也是值得的。避免某变量忘记初始化出现野值的问题。