我在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”的执行过程中放置​​一个计时器,并在每次执行后加总和。

10-06 05:24
查看更多