簡體   English   中英

std :: istream ::獲取效率

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM