我有一種情況,我需要從潛在的大std::string
(我用20M std::string
進行壓力測試)中解析很多小std::string
。我跟蹤我想解析的std::string
開頭的索引,當我到達std::string
的末尾時,我做一個大的substr
。然後我使用這些std::string
s作爲std::map
的密鑰解析出來。C++字符串實例化與strncpy/memcopy
我期望通過切換到char*
使其更快運行。我需要做的是維護指向我想要解析的字符串的開頭的指針,在解析字符串時計算字符串的長度,然後實例化一個新的char*
,它保存解析出的字符串的長度。然後我將strncpy/memcpy
的字符串放入新的char*
。當我使用這個新的char*
作爲std::map
的關鍵時,我必須提供一個運行strcmp
的比較仿函數。
現在我已經有了東西,總共需要290毫秒的總計來解析字符串,而不用插入std::map
(插入時總共需要450毫秒)。將切換到char*
顯着(任何50毫秒+)更好的結果?
沒有人能夠明確地回答這個問題。運行代碼並對其進行基準測試。 – Jon
不,你不應該改用'char *'。改寫一個新的優化類。 – Pubby
找出最好的方法是實現這兩個版本並對它們進行配置。 –