Tôi nhận thấy rằng hiệu suất của một trong các dự án của tôi đã bị ảnh hưởng nặng nề khi tính năng ghi nhật ký được bật lần đầu tiên. Nhưng khi đạt đến giới hạn tệp nhật ký và chương trình bắt đầu ghi lại vào đầu tệp, việc ghi nhật ký sẽ nhanh hơn nhiều (nhanh hơn khoảng 50%). Việc đặt kích thước tệp nhật ký ở mức vài trăm MB là điều bình thường.
Hầu hết các trình quản lý tải xuống đều phân bổ một tệp giả có kích thước được yêu cầu trước khi bắt đầu tải tệp xuống. Điều này làm cho việc viết hiệu quả hơn vì toàn bộ khối được phân bổ cùng một lúc.
Cách tốt nhất để dự trữ dung lượng ổ đĩa một cách hiệu quả ở kích thước cố định khi chương trình của tôi bắt đầu lần đầu tiên là gì?
void ReserveSpace(DONG spaceLow, LONG spaceHigh, HANDLE hFile)
{
DWORD err = ::SetFilePointer(hFile, spaceLow, &spaceHigh, FILE_BEGIN);
nếu (err == INVALID_SET_FILE_POINTER) {
err = GetLastError();
//xử lý lỗi
}
if (!::SetEndOfFile(hFile)) {
err = GetLastError();
//xử lý lỗi
}
err = ::SetFilePointer(hFile, 0, 0, FILE_BEGIN); // đặt lại
}
Tôi là một lập trình viên xuất sắc, rất giỏi!