VC6.0和BCB6.0中STL的性能比较(2)

王朝vc·作者佚名  2006-01-08
宽屏版  字体: |||超大  

内存操作的测试

测试内容:

测试了new,delete,malloc和free。

其中:news,deletes,mallocs,frees都是做了10000次循环的结果。其他的都是单次操作的结果。

VC6.0的测试结果:

title news deletes new delete new[] delete[]

ticks 5050000 3800144 484 272 512 280

ms 2.7734e+000 2.0870e+000 2.6625e-004 1.4938e-004 2.8132e-004 1.5417e-004

title mallocs frees malloc free

ticks 4604936 4072944 780 252

ms 2.5332e+000 2.2406e+000 4.2908e-004 1.3840e-004

BCB6.0的测试结果:

title news deletes new delete new[] delete[]

ticks 2468652 932556 388 300 692 284

ms 1.3572e+00 5.1237e-01 2.1318e-04 1.6483e-04 3.8068e-04 1.5623e-04

title mallocs frees malloc free

ticks 1513416 1065864 400 228

ms 8.3206e-01 5.8634e-01 2.1992e-04 1.2527e-04

说明:1.这个结果是4次测试后的最小值集合,而不是在一次测试中完成的。

2.BCB6.0的malloc的测试结果有个很奇怪的现象,存在两个经常出现的范围。时钟周期数一个是在400偏上的范围,还有一个在640偏上的范围(都是大于),经常出现,不明白为什么。也许和操作系统内存调度有关?

比较结果:

BCB6.0全面胜出。唯一例外的是new[]

分析:

以new为例。VC中,循环一万次的news平均每次的时钟数是505,比单次的要多。而BCB中,情况却相反,平均只有单次调用的64%,delete就更加突出。

比较malloc和new可以看出,在VC中malloc并不占据多少优势,BCB中则优势明显。但是在单个的调用中,VC和BCB中的malloc都输给了new。看来认为用malloc可以提高性能的说法值得商榷,并不总是正确的。

由于这些操作都是成对出现的,实际代码中要合并考虑。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有