C++的问题。std :: istream ::得到效率
for(i=1;i<10000;i++){
cout << myfile.get();
}
将编程就在HDD中的文件10000个IO操作? (假定文件较大) 如果是这样,也许最好是读取512字节到某个缓冲区,然后从那里接受字符char,然后再复制512字节等等?
C++的问题。std :: istream ::得到效率
for(i=1;i<10000;i++){
cout << myfile.get();
}
将编程就在HDD中的文件10000个IO操作? (假定文件较大) 如果是这样,也许最好是读取512字节到某个缓冲区,然后从那里接受字符char,然后再复制512字节等等?
您的操作系统会缓存该文件,因此您不需要优化该文件以便于常用。
ifstream
被缓冲,所以没有。
试试吧。
但是,在许多情况下,最快的操作将是一次读取整个文件,然后处理内存中的数据。
但是,真的,尝试每种策略,并看看哪些最好。
但请记住,不管底层文件缓冲机制如何,一次读取一个字节是slow。如果没有别的,它可以调用相当慢的IOStreams库10000次,当你可以完成几个调用。
正如其他人所说 - 尝试。我已经做过的测试表明,一次读取大块(使用流)的速度可能快于单独依赖流自身缓存的速度的两倍。但是,这取决于像缓冲区大小和(我期望)流库实现 - 我使用g ++。
它不会发出10000个IO请求,但它仍然比在一次调用中读取那些10KB慢得多。 – jalf