<分区>
我有一种情况,我需要从一个可能很大的 std::string
中解析出很多小的 std::string
(我很紧张-使用 20M std::string
进行测试)。我跟踪要解析的 std::string
开头的索引,当我到达 std::string
的结尾时,我会这样做大型 std::string
的 substr
。然后,我使用这些已解析出的 std::string
作为 std::map
的键。
我希望通过切换到 char*
来加快运行速度。我收集到的我需要做的是维护指向我要解析的字符串开头的指针,在解析时计算字符串的长度,然后实例化一个新的 char*
保存解析出的字符串的长度。然后,我将 strncpy/memcpy
字符串转换为新的 char*
。当我使用这个新的 char*
作为 std::map
的键时,我必须提供一个将运行 strcmp
的比较仿函数。
我现在的方式是,在不插入 std::map
的情况下解析字符串平均总共需要 290 毫秒(插入总共需要 450 毫秒)。切换到 char*
会给我带来显着(超过 50 毫秒)更好的结果吗?