Las*_*lan 15 c++ windows performance stl visual-studio
我在Windows下的性能关键C++代码中使用了很多STL.获得一些额外性能的一种可能的"廉价"方式是改为更快的STL库.
根据这篇文章, STLport更快,使用更少的内存,但它已经有几年了.
最近有人做过这个改变,你的结果是什么?
Mat*_*tyT 15
我没有将STLPort的性能与MSCVC进行比较,但如果存在显着差异,我会感到惊讶.(当然,在发布模式下 - 调试版本可能会有很大差异.)不幸的是,您提供的链接 - 以及我所看到的任何其他比较 - 对于细节来说太过有用了.
在考虑更改标准库提供程序之前,我建议您大量分析代码以确定瓶颈所在.这是标准建议; 在尝试任何性能改进之前始终保持简
即使分析确实揭示了标准库容器或算法中的性能问题,我建议您首先分析您如何使用它们.算法改进和适当的容器选择,特别是考虑Big-O成本,更有可能带来更高的性能回报.
我们最近做了相反的任务.我们的应用程序是一个跨平台的C++服务器程序,它构建在Windows上的VS 2008(x86)和HP-UX ia64和Linux上的gcc 4.3.在每个平台上,我们使用STLport 5.1.7作为STL库和Boost 1.38.
为了比较前一段时间的性能,我们还在没有STLport的情况下构建了应用程序,之后我们测量了性能.
在Windows之后,性能变得稍微好一些.所以我们选择停止在VS 2008中使用STLport并使用默认的VS 2008 STL库.
在HP-UX ia64上,性能下降了20%.Caliper(HP-UX分析器)显示字符串分配花费更多时间.在默认gcc STL库中的字符串赋值内部,调用了pthread_mutex_unock.据我所知,使用pthread_mutex_lock/pthread_mutex_unlock,因为默认的gcc的STL库使用COW字符串.在我们的应用程序中,我们执行大量字符串分配,并且由于COW字符串,我们的性能会变差.所以我们仍然在使用gcc的HP-UX上使用STLPort.
在我工作的一个项目中,使用stl非常繁重,切换到STLport导致在微软STL实现的一半时间内完成工作.这不是证明,但我认为这是表现的良好迹象.我相信这部分归功于STLport先进的内存管理系统.
我确实记得在做这个改变时得到一些警告,但没有什么是无法快速解决的.作为一个缺点,我要补充一点,使用Visual Studio的调试器调试STLport比使用Microsoft的STL更简单(更新:似乎有一种方法可以向调试器解释如何处理STLport容器,感谢Jalf!).
最新版本可以追溯到2008年10月,因此仍然有人在努力.请看这里下载它.
一年前我完全相反,这就是为什么:
归档时间: |
|
查看次数: |
12264 次 |
最近记录: |