【发布时间】:2010-10-03 09:30:55
【问题描述】:
我被告知我的库比应有的速度慢,解析特定文件(文本文件,大小 326 kb)的速度要慢 30 倍以上。用户建议可能是我用的是std::ifstream(大概不是FILE)。
我不想盲目地重写,所以我想我先在这里检查一下,因为我的猜测是瓶颈在其他地方。我正在逐字阅读,所以我使用的唯一函数是get()、peek() 和tellg()/seekg()。
更新:
我进行了分析,并得到了confusing 输出 - gprof 似乎并不认为它花了这么长时间。我重写了程序,首先将整个文件读入缓冲区,它的速度提高了大约 100 倍。我认为问题可能是 tellg()/seekg() 花了很长时间,但 gprof 可能由于某种原因无法看到。在任何情况下,ifstream 似乎没有缓冲整个文件,即使对于这个大小。
【问题讨论】:
标签: c++ optimization file-io ifstream