我在Windows下的性能关键C++代码中使用了相当多的STL库。一种可能的“便宜”提高性能的方法是更换一个更快的STL库。
根据这篇博客文章,STLport更快、占用更少的内存,不过这篇文章有些年头了。
最近有没有人做过这个更改,你们的结果如何?
我在Windows下的性能关键C++代码中使用了相当多的STL库。一种可能的“便宜”提高性能的方法是更换一个更快的STL库。
根据这篇博客文章,STLport更快、占用更少的内存,不过这篇文章有些年头了。
最近有没有人做过这个更改,你们的结果如何?
我没有比较STLPort和MSCVC的表现,但如果有任何明显的差异,我会感到惊讶。(当然是在发布模式下 - 调试版本很可能会有很大不同。)不幸的是,你提供的链接 - 以及我看过的任何其他比较 - 都缺乏细节,无法提供有用的信息。
在考虑更改标准库提供程序之前,我建议你对代码进行深度分析,以确定瓶颈在哪里。这是标准建议; 在尝试任何性能改进之前始终进行分析!
即使分析表明标准库容器或算法存在性能问题,我建议你首先分析如何使用它们。算法改进和适当的容器选择,特别是考虑大O成本,更有可能带来更高的性能回报。
我一年前做了完全相反的事情,原因如下:
如果您使用STLPort,那么您将进入一个世界,在这个世界中,您使用的每个基于STL的第三方库都必须重新编译为STLPort,以避免出现问题……
STLPort确实有不同的内存策略,但如果这是您的瓶颈,那么您的性能提升路径是更改分配器(例如切换到Hoard),而不是更改STL。
我没有尝试过,但据我所知,微软的STL实现没有进行重大更改。(VS2008编译器与2005相比也没有太多新的优化)因此,如果STLPort以前更快,那么现在可能仍然如此。
但这只是猜测。 :) 如果您尝试了,请务必报告结果。