私のライブラリは、特定のファイル (テキスト ファイル、サイズ 326 kb) の解析が 30 倍以上遅すぎるという報告を受けました。std::ifstreamユーザーは、私が(おそらく の代わりに)を使用している可能性があると示唆しましたFILE。
やみくもに書き直すのは嫌なので、最初にここを確認しようと思いました。私の推測では、ボトルネックは別の場所にあると思われます。私は文字ごとに読んでいるので、使用している関数はget()、peek()、およびtellg()/seekg().
アップデート:
プロファイリングを行ったところ、紛らわしい出力が得られました。gprof は、それほど時間がかかったとは考えていないようです。最初にファイル全体をバッファーに読み込むようにプログラムを書き直したところ、約 100 倍高速化されました。tellg()/seekg()問題は時間がかかったことだと思いますが、何らかの理由で gprof がそれを見ることができなかったのかもしれません。いずれにせよ、このサイズであっても、ファイル全体をバッファリングするようには見えifstreamません。