我被告知我的库比它应该的要慢,解析特定文件(文本文件,大小 326 kb)的速度要慢 30 倍以上。用户建议可能是我正在使用std::ifstream
(大概而不是FILE
)。
我宁愿不盲目地重写,所以我想我先在这里检查一下,因为我的猜测是瓶颈在其他地方。我正在逐个字符地阅读,所以我使用的唯一功能是get()
、peek()
和tellg()/seekg()
。
更新:
我进行了分析,得到了令人困惑的输出 - gprof 似乎并不认为它花了这么长时间。我重写了程序,首先将整个文件读入缓冲区,它的速度提高了大约 100 倍。我认为问题可能是tellg()/seekg()
花费了很长时间,但 gprof 可能由于某种原因无法看到。在任何情况下,ifstream
似乎都不会缓冲整个文件,即使对于这个大小。