其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
VC6.0和BCB6.0中STL的性能比较(2)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

内存操作的测试

测试内容:
测试了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可以提高性能的说法值得商榷,并不总是正确的。
    由于这些操作都是成对出现的,实际代码中要合并考虑。




相关文章

相关软件