我正在开发一个高性能应用程序,其中所有调用都必须是合理的。我有一张在每次交易开始时使用过一次的地图,用于查找我想改进的地方。地图在启动时加载,之后不会更改。由于性能原因,替代stdext :: hash_map
下图中的关键字是一个std :: string,但如果需要它可以将其更改为一个char数组。 C或C++作为解决方案很好。
typedef stdext::hash_map<std:string, int> symbols_t;
有谁知道任何其他解决方案,可以消除查找或更快?
非常感谢您的帮助。
编辑的其他信息:
1. hash_map当前有350,000个元素。
2.每个键值通常在4到10个字符之间。
3.信息从第三方API的回调中收到。在进行地图查找时,回调被赋予一个用作键值的符号。该软件的其余部分是从映射查找返回的int驱动的。
感谢:谢谢大家的意见。你给了我一些探索的途径。我一定会尝试一下。我很感激帮助。
我非常怀疑,如果你用'char *'替换'std :: string',整体性能会大大不同。但是,这肯定会使代码更不易维护。 – ereOn 2010-09-22 11:59:02
哈希映射是O(1),因此查找时间仅取决于计算哈希所需的时间。你看过吗? – sbi 2010-09-22 12:19:35
我在想,这是你代码中最大的瓶颈吗?闻起来不成熟的优化。 – ybungalobill 2010-09-22 12:29:35