与 C# 相比,C++ 文件解析器速度较慢
c++ file parser slow compared to c#
我需要用 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 启动。
相关文章:
- 为什么在读取文件大小时文件IO速度会发生变化
- 文件系统:复制功能的速度秘诀是什么
- 加快在C++中读取/处理日志文件的速度
- 如何提高文件的读取速度?
- C++二进制文件 I/O 操作速度变慢.数据库如何处理二进制文件?
- C++以尽可能快的速度逐行将字符串保存到文件中
- 实时更改音频文件的速度
- cl 生成的可执行文件在第一次运行时运行速度非常慢
- 如何以快速速度将二进制文件分为C 或Python的6字节块
- MF SinkWriter mp4文件的播放持续时间是添加音频样本时的一半,图像的播放速度也是添加音频样本的两倍
- 头文件是否会影响程序的内存或处理速度
- 优化.txt文件的创建速度
- 提升文件系统的速度慢得令人难以置信
- 为什么windows第一次打开文件的速度这么慢,有没有更快的方法
- 将数据保存在std :: vector或.txt文件中的速度更快
- 嵌套的lambda表达式在用Visual C++编译和生成巨大的对象文件时速度非常慢
- 头文件会减慢程序的速度
- C++-为什么标记化器从文件中读取行的速度如此之慢
- 以 C 和 C++ 最快的速度输出到文件
- 用于写入顺序日志文件以提高速度的 mmap