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