Reserve disk space before writing a file for efficiency

前端 未结 6 748
情书的邮戳
情书的邮戳 2020-12-14 19:42

I have noticed a huge performance hit in one of my projects when logging is enabled for the first time. But when the log file limit is reached and the program starts writing

6条回答
  •  旧时难觅i
    2020-12-14 19:56

    void ReserveSpace(LONG spaceLow, LONG spaceHigh, HANDLE hFile)
    {
        DWORD err = ::SetFilePointer(hFile, spaceLow, &spaceHigh, FILE_BEGIN);
    
        if (err == INVALID_SET_FILE_POINTER) {
            err = GetLastError();
            // handle error
        }
        if (!::SetEndOfFile(hFile)) {
            err = GetLastError();
            // handle error
        }
        err = ::SetFilePointer(hFile, 0, 0, FILE_BEGIN); // reset
    }
    

提交回复
热议问题