[英]std::istream::get efficiency
C ++問題。
for(i=1;i<10000;i++){
cout << myfile.get();
}
程序將對HDD中的文件進行10000 IO操作嗎? (如果文件更大),如果這樣,也許最好先說說512字節到某個緩沖區,然后從那里逐個字符地讀取char,然后再復制512字節,依此類推?
正如其他人所說的-試試吧。 我所做的測試表明,一次讀取一個大塊(使用流)的速度可以高達僅依賴於流自身的緩沖的兩倍。 但是,這取決於諸如緩沖區大小和(我希望)流庫實現的事情-我使用g ++。
您的操作系統將緩存該文件,因此您無需優化此文件即可正常使用。
ifstream
已緩沖,因此,否。
試試吧。
但是,在許多情況下,最快的操作是一次讀取整個文件,然后處理內存中的數據。
但實際上,請嘗試每種策略,然后看看哪種方法最有效。
但是請記住,不管底層的文件緩沖機制如何,一次讀取一個字節都是很慢的 。 如果沒有別的,它可以調用相當慢的IOStreams庫10000次,而您只需要執行幾次調用即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.