今天把手头的一个程序改成使用 STL,主要是 vector 和 list。上午修改时发现使用 STL 后竟然比用我自己写的一个简单的 list 要慢很多,大约 4 倍的样子,积极性很受打击。
下午开会。
吃过晚饭后,又拿出程序,赫然发现是在 Debug 模式下编译和,和原来在 Release 模式下的程序比,慢 4 倍太正常不过了。于是换回 Release 模式,发觉比原来的程序要快大约 20%,还是不错的。明天继续试验 STL。
最早知道 STL 应该是很早的事情了,不过当时并不成熟,也就没有使用。而且由于专业的原因,大部分程序都是做数值计算的,很少编写复杂的数据结构。最多也就用一些链表,自己写了一个简单的链表类,也挺好用的。
今天突然想试试 STL,于是就下载了 STLport 5.1.0 来安装。STLport 是 SGI STL 的一个免费移植版本,支持多操作平台。它的主页在 www.stlport.org,不过好像那里只有 4.6.2 的版本下载。最新发布的版本可以到它在 SourceForge 的页面上下载,地址是 http://sourceforge.net/projects/stlport
安装过程比较简单,我是在 VC 6.0 上使用的。
好了,现在可以编译 STL 程序了。注意 STLport 只支持 multithreaded,所以要在 'Project -> Settings -> C/C++ -> Code Generation -> Use runtime library' 中选择 Multithreaded。
为了测试 STLport 的安装,可以进入 build\test\unit 目录下,执行命令
nmake /fmsvc.mak install
然后运行 bin 目录下的 stl_unit_test*.exe 来进行测试。
Subversion 开始逐渐呈现取代 CVS 的趋势。我也在最近从 CVS 转到了 Subversion 上。网络上已经有一些比较两个版本控制系统的区别的文章了,比如
http://robinlet.bokee.com/2866408.html
能看英文的还可以看这个详细的各种版本控制系统比较结果
http://better-scm.berlios.de/comparison/comparison.html
不过看归看,一定要有实际使用才会有切实的体会的。我最喜欢 Subversion 的几个地方是:目录也有版本控制了,以前经常修改项目的目录结构,CVS 在这方面很弱;还有就是标签的实现是通过拷贝目录的方式实现的,很直观,也很方便,建立分支也是如此,想当初学习 CVS 的标签和分支可是让我费了不少精力呢;可以通过 Apache + DAV 来达到针对目录的管理,这样我可以有选择的把某些项目的源代码公开了,而原来的 CVS 则无法做到,我只好把不想公开的东西放在另一个版本库中了。Debian 下面安装 Subversion 也很方便。
最后列出一些有关 Subversion 的链接: