fstream中多个get()和单个getline()之间的理论性能差异

Theoretical perfomance difference between multiple get() and single getline() in fstream

本文关键字:理论 理论性 性能 之间 单个 get fstream getline      更新时间:2023-10-16

假设我正在读取一个文件。

ifstream f("file.txt");
while (f.good())
{
  char c = is.get();
}

ifstream f("file.txt");
string line;
while(f.good())
{
  getline(f, line);
}

如果文件句柄在整个文件读取过程中都处于打开状态,理论上会有什么不同吗?

取决于。

如果您的流没有被缓存,那么这两个版本之间可能会有明显的差异。如果出于某种原因,您不打开文件,而是打开速度极快的内存流,那么对get的多次调用可能会较慢。当然,这也取决于getline是如何实现的。

因此存在理论上的差异。当然,要查看是否存在实际差异,您应该尝试一下。很可能你没有注意到任何区别。