std :: istream ::获得效率

时间:2010-02-15 10:06:42

标签: c++ get

c ++问题。

for(i=1;i<10000;i++){
    cout << myfile.get();
}

程序是否会对HDD中的文件进行10000次IO操作? (鉴于文件较大) 如果是这样,也许最好读取让512字节到某个缓冲区,然后从那里取char,然后再复制512字节,依此类推?

4 个答案:

答案 0 :(得分:2)

正如其他人所说 - 试试吧。我已经完成的测试表明,一次性读取一个大块(使用流)的速度可能是仅依赖于流自身缓冲的两倍。但是,这取决于缓冲区大小和(我希望)流库实现 - 我使用g ++。

答案 1 :(得分:1)

您的操作系统将缓存该文件,因此您不需要对此进行优化以供常用。

答案 2 :(得分:1)

ifstream被缓冲,所以,没有。

答案 3 :(得分:1)

试试吧。

但是,在许多情况下,最快的操作是一次读取整个文件,然后处理内存中的数据。

但实际上,请尝试每种策略,看看哪种方法效果最好。

请记住,无论底层文件缓冲机制如何,一次读取一个字节。如果没有别的,它可以调用相当慢的IOStreams库10000次,当你只能做几次调用时。