vc2008 比 gcc4.3 真是差太多了
项目地址:http://code.google.com/p/febird
用gcc4.3重新编译了一下febird,出现了很多错误,仔细观察,这些错误都是因为不符合C++标准,重新改成符合标准的,比想象的改动量要大。
又测试了一下纯 C 实现的 algorithm: febird.c,是从VC2008的stl代码改过来的,在VC2008中测试比std::sort快20%,但是一到gcc中,却比std::sort慢了一倍还不止!不知到dinkware怎么写的。他有没有和sgi的比较过。重新研读了一下 gcc4.3 的 algorithm代码,gcc.stl.sort把insertion_sort放到sort的最后一个阶段,而ms.stl.sort把insertion_sort放到小区间内,就仅从这点上讲,gcc.stl.sort就少了很多函数调用的开销,ms又做了一些看似聪明的优化,比如递归层次按log(1.5,n)来计算,partition时又“跳过”连续相等的一段序列,等等,它的这些“优化”的结果就是速度只有gcc的1/3。