我有一个用bzip2读取和压缩的大型二进制文件。我正在尝试减少压缩时间,因为它需要大约1分30秒才能完成。
我想尝试的一件事是为fopen扩展缓冲区的大小。但是,我注意到在压缩过程中分配的内存几乎不超过7,000K。
这是我的代码:
int bzipError = BZ_OK;
BZFILE *bzipLogFile = BZ2_bzWriteOpen(&bzipError, CompressedLogFile, 9, 0, 30);
const int BUF_SIZE = 200000;
char* Buffer = new char[BUF_SIZE];
while (!feof(LogFile)) {
const size_t BytesRead = fread(Buffer, (size_t)1, BUF_SIZE, LogFile);
BZ2_bzWrite(&bzipError, bzipLogFile, Buffer, (int)BytesRead);
}
我意识到默认情况下应用程序可以在堆和堆栈上分配但是我使用了
#pragma comment(linker, "/STACK:200000")
#pragma comment(linker, "/HEAP:200000")
试图绕过这个。显然我错了。