アプリケーションのプロファイリングにより、CPU 時間の 5% 近くを文字列の割り当てに費やしていることがわかりました。多くの場所で、64MB の char バッファから C++ std::string オブジェクトを作成しています。問題は、プログラムの実行中にバッファが変更されることはありません。呼び出しの私の分析はstd::string(const char *buf,size_t buflen)
、文字列が作成された後にバッファが変更される可能性があるため、文字列がコピーされているということです。それはここの問題ではありません。この問題を回避する方法はありますか?
EDIT:私はバイナリデータを扱っているので、単に渡すことはできませんchar *s
. さらに、常に NULL をスキャンすることでかなりのオーバーヘッドが発生しますが、これはstd::string
回避できます。