std::string潜在的に大きなものから多くの小さな s を解析する必要がある状況がありますstd::string(私は 20M でストレステストを行っていますstd::string)。std::string解析したいの先頭のインデックスを追跡し、末尾に到達しstd::stringたらsubstr大きなstd::string. 次に、std::string解析したこれらの を a のキーとして使用しますstd::map。
に切り替えることで、これをより高速に実行できるようにしていchar*ます。私が収集する必要があるのは、解析したい文字列の先頭へのポインターを維持し、解析しながら文字列の長さを数え、char*解析された文字列の長さを保持する新しいインスタンスを作成することです。次にstrncpy/memcpy、文字列を新しいchar*. この newchar*を a のキーとして使用する場合、 astd::mapを実行する比較ファンクターを提供する必要がありstrcmpます。
私が今持っている方法では、文字列を挿入せずに解析するのに平均で合計290ミリ秒かかりますstd::map(挿入すると合計で約450ミリ秒かかります)。char*大幅に (50 ミリ秒以上) 良い結果が得られるように切り替えることはできますか?