使用fgets()c ++读取大型txt文件时的CPU使用率为99%

时间:2017-05-16 00:08:14

标签: c++ text cpu-usage fgets

我必须逐行读取大型txt文件(1Gb),并使用fgets()来执行此操作。我运行一个空的while循环,并且执行需要非常长的时间(30分钟),CPU利用率为99%。

int buffer_size = 30;  char buffer [buffer_size];

 while (fgets(buffer, buffer_size, traceFile1) != NULL)
 {
 }

我确实做了一些阅读,显然与文本解析相关的开销导致了这一点。所以问题是,有没有办法在txt文件中读取同时避免这种情况?我正在阅读网络模拟器的跟踪,因此每一行通常都有| Injection_cycle source destination |

我一直在寻找一段时间,所以如果有人对此有一个明智的答案,我会非常高兴:)

1 个答案:

答案 0 :(得分:0)

1GB = 1024MB= 1048576 KB = 1073741824 B 
30 min = 1800 seconds

所以你基本上比较了大约595k / s的比较(检查当前角色是' \ n'或者' \ t'还是eof)并且大约相同的内存量幽会。不仅如此,还要进行跳转操作,因为你有一个循环语句。

虽然速度不是太快,但也不会太慢,我已经看过一些"关键案例"无法正确使用计算机内存系统,结果如何扩展到各种尺寸?

我认为我不是原因,但希望有所帮助