我目前在玩zlib。
通常的示例大致如下(C / C ++伪代码)
z_stream zs;
memset(&zs, 0, sizeof(zs));
if (deflateInit(&zs, Z_DEFAULT_COMPRESSION) != Z_OK)
return false;
zs.next_in = input_data;
zs.avail_in = input_size;
zs.next_out = output_data;
zs.avail_out = output_size;
int result = deflate(&zs, Z_FINISH);
deflateEnd(&zs);
return result == Z_STREAM_END ? true : false;
Run Code Online (Sandbox Code Playgroud)
使用valgrind时,我看到deflateInit和memset并不是完全“免费”的操作,但是需要花费大量时间。
我的问题是,我可以重用z_stream和deflateInit?
例如,是否可以仅通过更新缓冲区多次放气?