STL性能测试

本文对不同版本C++ Standard Template Library(STL)的性能进行测试。用C与C++分别实现马尔可夫链算法程序,在不同编译环境下编译得到多个可执行文件。测试发现GNU C++ 2.95.3带的STL性能较好,精心设计的C程序比使用STL的C++程序执行快,还尝试将SGI STL用于其他编译器。
  作者主页 http://www.chenshuo.com 可下载测试文本与源代码

C++ Standard Template Library——STL的性能究竟如何,不同版本的STL其性能差异有多少?为了解这些,让我们来做一个简单的测试吧。

测试的基本思路是用CC++分别实现一个程序,实现相同的功能,并要求C++程序的主要数据结构用STL中的ContainersAlgorithms等来实现。然后比较两个程序的性能,看看究竟谁快,快多少。

因本人水C/C++水平极为有限,写的code实在拿不出手,为保证公平,最好用一位大家公认的大师级人物写的code来做这个测试。好在《The Practice of Programming》(中译本《程序设计实践》,裘宗燕译)第三章里,作者Brian W. Kenighan分别用CC++写了实现相同功能的Code,他老人家的程序用在这里最合适不过了。这个程序是用来实现“马尔可夫(markov)链算法”的,关于markov链算法的详情请看本文附录1

我在《The Practice of Programming》一书的主页 http://tpop.awl.com 下载到相应的代码,为了记录程序运行的时间,我在代码中加了几条语句(以“/* Added by Chen Shuo*/”标明),完整的代码见本文附录2

测试用机:

机器一:PII 300 with 512k L2 CacheIntel 440LX主板 66MHz外频,64M RAM,安装P – Win98 SE
机器二:PII 350 with 512k L2 CacheIntel 440BX主板 100MHz外频,128M RAM,安装Windows2000 Professional中文版with Service Pack 2

编译环境:(均在Windows下编译)

1、  Microsoft Visual C++ 6.0 with Service Pack 5

2、  Cygwin : dll ver 1.3.2 GNU C++ 2.95.3 (下载自http://www.cygwin.com

3、  Borland C++ Compiler 5.5.1 for free (下载自http://www.borland.com

 

共有三个文件要编译,分别是C版的markov.c;使用listmarkov_l.cpp;使用dequemarkov_d.cpp。其中markov.c需要和eprintf.c一同编译链接。

编译命令行参数(均已打开速度优化选项,编译的可执行文件在DOS Prompt中执行):

ps.我把BCC安装在C:/bccCygwin安装在c:/cygwin。所以环境变量的设置办法是:

set MSDevDir=C:/PROGRA~1/MICROS~3/COMMON/msdev98

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值