为什么基于模版替换方式的STL居然会比类构建的Delphi 数据结构泛型类库(uDGL)慢这么多?
STL 使用模板替换技术,性能应该比Delphi的类派生机制创建的数据结构泛型类库(uDGL)运行效率要好(原因在于虚函数的调用需要查找VMT表)。当然,内存占用上类派生机制创建的要比模板替换技术占用的内存小。
但是究竟会慢多少?我写个小小的程序小测试一下。难以想象,对于 List 双向链表容器(我改良后的)的插入InsertBegin(整数)算法,uDGL 居然会比VC STL 的快了将近2倍,不过插入字符串比 VC的STL 慢了一点,差距也不太大,一倍不到。对于Array数组容器的插入InsertBegin(整数)算法,uDGL要慢大约将近1倍,而在这里插入字符串却比VC的STL快21倍,古怪,实在古怪,莫非我的 VCSTL 的测试程序有问题(我很久都没有写过C++的代码了!)?按理只有字符串类型才应该比delphi慢些吧(vc string 也是STL类型)。附上 VCSTL的测试过程,请喜欢C++的高手指正。