与 C# 相比,C++ 文件解析器速度较慢

c++ file parser slow compared to c#

本文关键字:速度 文件 相比 C++      更新时间:2023-10-16

我需要用 c++ 编写一个文件解析器。

这是我的代码:

std::string line;       
vector<string> slice;
while(getline(m_inputStream, line))  
{           
}

我的文件很大,所以这个循环需要 12 秒。

我的 c# 代码是:

StreamReader sr = new StreamReader(fileName);
string strline = "";
while (!sr.EndOfStream)
{
    strline = sr.ReadLine();
}

这需要0.6秒...我在C++做错了什么?

首先,你用slice做什么?

C# 版本可能会读取字符串然后丢弃它 - 而 c# JIT 正在将其优化为无操作,因此只需初始化和退出所需的 0.6 秒。C++版本将生成代码来读取字符串,因此它确实在处理输入文件。如果要比较性能,请确保使用发布设置构建C++,调试代码对性能毫无意义。

对字符串执行一些操作,您将看到不同的性能数据,并检查两个系统中的内存使用情况,C# 将占用更多 RAM,直到 GC 启动。