zlibWrapper\README.md: reordering
This commit is contained in:
parent
611cd094d1
commit
2fb7e6b15d
@ -40,6 +40,33 @@ During decompression zlib and zstd streams are automatically detected and decomp
|
|||||||
This behavior can be changed using `ZWRAP_setDecompressionType(ZWRAP_FORCE_ZLIB)` what will make zlib decompression slightly faster.
|
This behavior can be changed using `ZWRAP_setDecompressionType(ZWRAP_FORCE_ZLIB)` what will make zlib decompression slightly faster.
|
||||||
|
|
||||||
|
|
||||||
|
#### Example
|
||||||
|
We have take the file ```test/example.c``` from [the zlib library distribution](http://zlib.net/) and copied it to [zlibWrapper/examples/example.c](examples/example.c).
|
||||||
|
After compilation and execution it shows the following results:
|
||||||
|
```
|
||||||
|
zlib version 1.2.8 = 0x1280, compile flags = 0x65
|
||||||
|
uncompress(): hello, hello!
|
||||||
|
gzread(): hello, hello!
|
||||||
|
gzgets() after gzseek: hello!
|
||||||
|
inflate(): hello, hello!
|
||||||
|
large_inflate(): OK
|
||||||
|
after inflateSync(): hello, hello!
|
||||||
|
inflate with dictionary: hello, hello!
|
||||||
|
```
|
||||||
|
Then we have changed ```#include "zlib.h"``` to ```#include "zstd_zlibwrapper.h"```, compiled the [example.c](examples/example.c) file
|
||||||
|
with ```-DZWRAP_USE_ZSTD=1``` and linked with additional ```zstd_zlibwrapper.o -lzstd```.
|
||||||
|
We were forced to turn off the following functions: ```test_gzio```, ```test_flush```, ```test_sync``` which use currently unsupported features.
|
||||||
|
After running it shows the following results:
|
||||||
|
```
|
||||||
|
zlib version 1.2.8 = 0x1280, compile flags = 0x65
|
||||||
|
uncompress(): hello, hello!
|
||||||
|
inflate(): hello, hello!
|
||||||
|
large_inflate(): OK
|
||||||
|
inflate with dictionary: hello, hello!
|
||||||
|
```
|
||||||
|
The script used for compilation can be found at [zlibWrapper/Makefile](Makefile).
|
||||||
|
|
||||||
|
|
||||||
#### The measurement of performace of Zstandard wrapper for zlib
|
#### The measurement of performace of Zstandard wrapper for zlib
|
||||||
|
|
||||||
The zstd distribution contains a tool called `zwrapbench` which can measure speed and ratio of zlib, zstd, and the wrapper.
|
The zstd distribution contains a tool called `zwrapbench` which can measure speed and ratio of zlib, zstd, and the wrapper.
|
||||||
@ -77,7 +104,7 @@ The speed of compression can be improved with reusing a single context with foll
|
|||||||
To check the difference we made experiments using `zwrapbench` with zstd and zlib compression (both at level 3) with 4 KB blocks.
|
To check the difference we made experiments using `zwrapbench` with zstd and zlib compression (both at level 3) with 4 KB blocks.
|
||||||
The input data was git repository downloaded from https://github.com/git/git/archive/master.zip and converted to uncompressed tarball.
|
The input data was git repository downloaded from https://github.com/git/git/archive/master.zip and converted to uncompressed tarball.
|
||||||
The table below shows that reusing contexts has a minor influence on zlib but it gives improvement for zstd.
|
The table below shows that reusing contexts has a minor influence on zlib but it gives improvement for zstd.
|
||||||
In our example (the last 2 lines) is gives 15% better compression speed and 6% better decompression speed.
|
In our example (the last 2 lines) it gives 15% better compression speed and 6% better decompression speed.
|
||||||
|
|
||||||
| Compression type | Compression | Decompress.| Compr. size | Ratio |
|
| Compression type | Compression | Decompress.| Compr. size | Ratio |
|
||||||
| ------------------------------------------------- | ------------| -----------| ----------- | ----- |
|
| ------------------------------------------------- | ------------| -----------| ----------- | ----- |
|
||||||
@ -91,33 +118,6 @@ In our example (the last 2 lines) is gives 15% better compression speed and 6% b
|
|||||||
| zstd 1.1.0 with zlibWrapper not reusing a context | 91.45 MB/s | 279.8 MB/s | 8981368 | 2.893 |
|
| zstd 1.1.0 with zlibWrapper not reusing a context | 91.45 MB/s | 279.8 MB/s | 8981368 | 2.893 |
|
||||||
|
|
||||||
|
|
||||||
#### Example
|
|
||||||
We have take the file ```test/example.c``` from [the zlib library distribution](http://zlib.net/) and copied it to [zlibWrapper/examples/example.c](examples/example.c).
|
|
||||||
After compilation and execution it shows the following results:
|
|
||||||
```
|
|
||||||
zlib version 1.2.8 = 0x1280, compile flags = 0x65
|
|
||||||
uncompress(): hello, hello!
|
|
||||||
gzread(): hello, hello!
|
|
||||||
gzgets() after gzseek: hello!
|
|
||||||
inflate(): hello, hello!
|
|
||||||
large_inflate(): OK
|
|
||||||
after inflateSync(): hello, hello!
|
|
||||||
inflate with dictionary: hello, hello!
|
|
||||||
```
|
|
||||||
Then we have changed ```#include "zlib.h"``` to ```#include "zstd_zlibwrapper.h"```, compiled the [example.c](examples/example.c) file
|
|
||||||
with ```-DZWRAP_USE_ZSTD=1``` and linked with additional ```zstd_zlibwrapper.o -lzstd```.
|
|
||||||
We were forced to turn off the following functions: ```test_gzio```, ```test_flush```, ```test_sync``` which use currently unsupported features.
|
|
||||||
After running it shows the following results:
|
|
||||||
```
|
|
||||||
zlib version 1.2.8 = 0x1280, compile flags = 0x65
|
|
||||||
uncompress(): hello, hello!
|
|
||||||
inflate(): hello, hello!
|
|
||||||
large_inflate(): OK
|
|
||||||
inflate with dictionary: hello, hello!
|
|
||||||
```
|
|
||||||
The script used for compilation can be found at [zlibWrapper/Makefile](Makefile).
|
|
||||||
|
|
||||||
|
|
||||||
#### Compatibility issues
|
#### Compatibility issues
|
||||||
After enabling zstd compression not all native zlib functions are supported. When calling unsupported methods they put error message into strm->msg and return Z_STREAM_ERROR.
|
After enabling zstd compression not all native zlib functions are supported. When calling unsupported methods they put error message into strm->msg and return Z_STREAM_ERROR.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user