我在C ++中这样做:
if (myfile.is_open()){
while (! myfile.eof()){
getline (myfile,line);
DO STUFF
}
myfile.close();
}
else{
cout << "Unable to open file";
}
我正在尝试从文本文件中读取行并对其进行处理。我正在尝试查看算法的运行时间。从文件中读取行会大大减慢我的程序速度,以致我无法获得准确的结果吗?
最佳答案
是的-如果您想准确地对“ DO STUFF”进行基准测试,那么您也不应考虑磁盘IO。因此,您可以做的一件事是将整个文件缓冲到内存中,然后对其进行处理并计时。但是,如果文件太大,或者会使行处理程序变得更加困难,那么您可以做的另一件事是将文件逐行读取到内存中大约10次,而无需进行处理,将时间平均,然后按照您的方式对函数进行计时立即使用它(包括处理和磁盘I / O),然后从总时间中减去平均磁盘读取时间。
编辑:我不知道为什么我以前没有想到这一点,但是您也可以在“ DO STUFF”的执行过程中放置一个计时器,并在每次执行后加总和。