diff --git a/docs/manual.md b/docs/manual.md index f12c14b..161ae66 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -1937,7 +1937,7 @@ function gunzip_inflate(zstream, compressed_data, expected_uncompressed_chunk_si * gunzip_init создает и возвращает контекст gzip потока для последующих вызовов других функций. Значение windowBits см. в документации по zlib (по умолчанию 47). * gunzip_end освобождает контекст gzip. может быть освобожден сборщиком мусора, но лучше вызывать явно. * gunzip_inflate разжимает очередную часть зипованных данных. Данные можно скармливать частями. Расжатые части конкатенируются для получения полных данных. Возвращается 2 аргумента : расжатые данные и bool признак конца gzip. В случае испорченных данных или при нехватке памяти возвращается nil. -* expected_uncompressed_chunk_size - необязательный параметр для оптимизации выделения памяти под расжимаемые данные. Если буфера не хватает, вызываются realloc, что влияет на производительность. По умолчанию - четырехкратный размер compressed_data. +* expected_uncompressed_chunk_size - необязательный параметр для оптимизации выделения памяти под расжимаемые данные. Если буфера не хватает, вызываются realloc, что влияет на производительность. Размер следует выбирать согласно ожидаемой степени сжатия с небольшим запасом. По умолчанию - трехкратный размер compressed_data, что соответствует степени сжатия текстовых данных. #### gzip @@ -1950,7 +1950,7 @@ function gzip_deflate(zstream, uncompressed_data, expected_compressed_chunk_size * gzip_init создает и возвращает контекст gzip потока для последующих вызовов других функций. Значение windowBits см. в документации по zlib (по умолчанию 31). level - уровень сжатия от 1 до 9 (по умолчанию 9), memlevel - допустимый уровень использования памяти от 1 до 8 (по умолчанию 8). * gzip_end освобождает контекст gzip. может быть освобожден сборщиком мусора, но лучше вызывать явно. * gzip_deflate cжимает очередную часть данных. Данные можно скармливать частями. Cжатые части конкатенируются для получения полных данных. Для финализации потока по окончанию скармливания данных функция должна быть вызвана с uncompressed_data=nil или uncompressed_data="". Возвращается 2 аргумента : сжатые данные и bool признак конца gzip. При ошибках gzip или нехватке памяти возвращается nil. -* expected_compressed_chunk_size - необязательный параметр для оптимизации выделения памяти под cжимаемые данные. Если буфера не хватает, вызываются realloc, что влияет на производительность. По умолчанию - четверть размера uncompressed_data. +* expected_compressed_chunk_size - необязательный параметр для оптимизации выделения памяти под cжимаемые данные. Если буфера не хватает, вызываются realloc, что влияет на производительность. Размер следует выбирать согласно ожидаемой степени сжатия с небольшим запасом. По умолчанию - треть размера uncompressed_data, что соответствует степени сжатия текстовых данных. ### Системные функции diff --git a/nfq2/lua.c b/nfq2/lua.c index 8705b8d..b1d5835 100644 --- a/nfq2/lua.c +++ b/nfq2/lua.c @@ -2685,7 +2685,7 @@ static int luacall_gunzip_inflate(lua_State *L) struct userdata_zs *uzs = lua_uzs(L, 1, true); uzs->zs.next_in = (z_const Bytef*)luaL_checklstring(L,2,&l); uzs->zs.avail_in = (uInt)l; - size_t bufchunk = argc>=3 ? luaL_checkinteger(L,3) : l*4; + size_t bufchunk = argc>=3 ? luaL_checkinteger(L,3) : l*3; do { @@ -2797,7 +2797,7 @@ static int luacall_gzip_deflate(lua_State *L) uzs->zs.next_in = (z_const Bytef*)luaL_checklstring(L,2,&l); uzs->zs.avail_in = (uInt)l; } - size_t bufchunk = argc>=3 ? luaL_checkinteger(L,3) : 1+l/4; + size_t bufchunk = argc>=3 ? luaL_checkinteger(L,3) : 1+l/3; do {