我正在開發一個高性能應用程序,其中所有調用都必須是合理的。我有一張在每次交易開始時使用過一次的地圖,用於查找我想改進的地方。地圖在啓動時加載,之後不會更改。由於性能原因,替代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