我有一种情况,我需要从一个可能很大的 s 中解析很多小std::string
s std::string
(我正在使用 20M 进行压力测试std::string
)。我跟踪std::string
要解析的开头的索引,当我到达结尾时,std::string
我会做一个substr
大的std::string
. 然后,我将这些std::string
已解析出来的 s 用作 a 的键std::map
。
我希望通过切换到char*
. 我收集到我需要做的是维护指向要解析出的字符串开头的指针,在解析字符串时计算字符串的长度,然后实例化一个char*
保存解析出的字符串长度的新字符串。然后我strncpy/memcpy
把字符串改成新的char*
。当我使用这个 newchar*
作为 a 的键时,std::map
我必须提供一个比较函子来运行 a strcmp
。
我现在拥有的东西的方式,平均总共需要 290 毫秒来解析字符串而不插入std::map
(插入总共需要 450 毫秒)。切换char*
会给我显着(50 ms+)更好的结果吗?