我正在尝试将c#程序迁移到c.
c#程序逐行读取1~5 gb大小的文本文件,并对每行进行一些分析.
c#代码如下所示.
c#程序逐行读取1~5 gb大小的文本文件,并对每行进行一些分析.
c#代码如下所示.
using (var f = File.OpenRead(fname)) using (var reader = new StreamReader(f)) while (!reader.EndOfStream) { var line = reader.ReadLine(); // do some analysis }
对于具有700万行的给定1.6 gb文件,此代码大约需要18秒.
我首先编写的用于迁移的c代码如下所示
ifstream f(fname); string line; while (getline(f,line)) { // do some analysis }
ifstream f(fname); char line[2000]; while (f.getline(line,2000)) { // do some analysis }
上面的c大约需要85秒.
FILE *file = fopen ( fname,"r" ); char line[2000]; while (fgets(line,2000,file) != NULL ) { // do some analysis } fclose ( file );
上面的c代码大约需要33秒.
最后两个代码,将行解析为char []而不是字符串,将char []转换为字符串需要大约30秒.
有没有办法提高c / c代码的性能来逐行读取文本文件以匹配c#性能?
(补充:我正在使用带有VC 10.0,x64的Windows 7 64位操作系统)
解决方法
原文地址:https://www.jb51.cc/csharp/243709.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。