-2

我需要用 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++ 中做错了什么?

4

1 回答 1

2

首先,你在做什么slice

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

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

于 2012-06-05T13:45:17.273 回答