簡體   English   中英

C ++快速讀取較大文件的最佳方法

[英]C++ Best way to quickly read from larger file

在運行期間,我經常需要讀取較大文件的一小部分(300 mb)。 目前我總是打開文件,從中讀取然后再次關閉它:

FILE *file =fopen(szFileName,"rb");
if (file)
{
    fseek( file,iFirstByteToRead, SEEK_SET);
    fread(nEncodedBytes,sizeof(unsigned char), iLenCompressedBytes, file);
    fclose(file);
}

但這太慢了,因為我經常這樣做。 另外我不確定fread是否可以加速。

請問這種情況的最佳做法是什么?

保持文件打開,你會做得更好。

嘗試使用mmap來提高性能。

與文件控制相關的工作總是會導致昂貴的成本。 如果您多次控制以管理文件,則不必關閉文件指針。

如下所示,一旦你得到文件指針,

FILE *stream = fopen(stream, “rb”);

if (stream != NULL)

您必須在程序結束后關閉流文件指針,並且如果您必須管理許多文件,您將使用專用作文件讀取的線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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