diff --git a/CHANGELOG.md b/CHANGELOG.md index c841184..ea1ab30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,27 +1,45 @@ +v0.3.0 +------ +*Released on March 1st, 2022* + +**BREAKING CHANGES** +* New VTEnc API. [#31](https://github.com/vteromero/VTEnc/pull/31) + +**FIXES** +* Fix nodes visiting order. [#25](https://github.com/vteromero/VTEnc/pull/25) + +**OTHER** +* Improve decoding performance by memoizing higher bits. [#29](https://github.com/vteromero/VTEnc/pull/29) +* Coding style. [#30](https://github.com/vteromero/VTEnc/pull/30) +* Do not use typedef for internal structs. [#27](https://github.com/vteromero/VTEnc/pull/27) +* Re-implement BitClusterStack to use a fixed-size array instead of allocating memory. [#26](https://github.com/vteromero/VTEnc/pull/26) +* Replace BitClusterStack with generic implementation. [#28](https://github.com/vteromero/VTEnc/pull/28) +* Removes -g3 gcc flag for all targets, except debug. [#32](https://github.com/vteromero/VTEnc/pull/32) + v0.2.0 ------ *Released on May 20th, 2020* **BREAKING CHANGES**: -* Simplify API by removing specific functions for lists and sets. #20 -* Add `VtencEncoder` and `VtencDecoder` structures to provide encoding parameters and to hold returning state in `vtenc_encode`* and `vtenc_decode`* functions. #20 -* Remove sequence size from encoding data format. #21 -* Remove `vtenc_decoded_size`* API functions. #21 -* Remove "non-empty sequence" restriction when encoding sequences with no repeated values. #21 -* Add `allow_repeated_values` encoding parameter. #20 -* Add `skip_full_subtrees` encoding parameter. #20 -* Add `min_cluster_length` encoding parameter. #22 +* Simplify API by removing specific functions for lists and sets. [#20](https://github.com/vteromero/VTEnc/pull/20) +* Add `VtencEncoder` and `VtencDecoder` structures to provide encoding parameters and to hold returning state in `vtenc_encode`* and `vtenc_decode`* functions. [#20](https://github.com/vteromero/VTEnc/pull/20) +* Remove sequence size from encoding data format. [#21](https://github.com/vteromero/VTEnc/pull/21) +* Remove `vtenc_decoded_size`* API functions. [#21](https://github.com/vteromero/VTEnc/pull/21) +* Remove "non-empty sequence" restriction when encoding sequences with no repeated values. [#21](https://github.com/vteromero/VTEnc/pull/21) +* Add `allow_repeated_values` encoding parameter. [#20](https://github.com/vteromero/VTEnc/pull/20) +* Add `skip_full_subtrees` encoding parameter. [#20](https://github.com/vteromero/VTEnc/pull/20) +* Add `min_cluster_length` encoding parameter. [#22](https://github.com/vteromero/VTEnc/pull/22) **FIXES:** -* Fix bug on decoding steps order not matching its encoding counterpart. #23 +* Fix bug on decoding steps order not matching its encoding counterpart. [#23](https://github.com/vteromero/VTEnc/pull/23) v0.1.0 ------ *Released on March 26th, 2020* -* **BREAKING CHANGE**: Encode lower bits of values in clusters of length 1 #18 -* Refactor of `count_zeros_at_bit_pos`* functions to improve encoding performance #16 -* Fix bug on wrongly using `memcmp` on some testing programs #17 #14 -* Tests for random sequences #15 +* **BREAKING CHANGE**: Encode lower bits of values in clusters of length 1. [#18](https://github.com/vteromero/VTEnc/pull/18) +* Refactor of `count_zeros_at_bit_pos`* functions to improve encoding performance. [#16](https://github.com/vteromero/VTEnc/pull/16) +* Fix bug on wrongly using `memcmp` on some testing programs. [#17](https://github.com/vteromero/VTEnc/pull/17) [#14](https://github.com/vteromero/VTEnc/pull/14) +* Tests for random sequences. [#15](https://github.com/vteromero/VTEnc/pull/15) v0.0.3 ------ diff --git a/README.md b/README.md index 6f58dc2..757dfe8 100644 --- a/README.md +++ b/README.md @@ -6,22 +6,24 @@ ## Results -*This is a work-in-progress section. Last updated on: 2020-05-20* +*This is a work-in-progress section. Last updated on: 2022-03-01* -For reference, VTEnc has been tested on a laptop Ubuntu Desktop 19.10 with a Core i7-6700HQ CPU @ 2.60GHz x 8, using different data sets and comparing it with other integer compression algorithms. See [Tests](https://github.com/vteromero/VTEnc#tests) and [Benchmarks](https://github.com/vteromero/VTEnc#benchmarks) below for further information. +For reference, VTEnc has been tested on a laptop Ubuntu Desktop 21.10 with a Core i7-6700HQ CPU @ 2.60GHz x 8, using different data sets and comparing it with other integer compression algorithms. See [Tests](https://github.com/vteromero/VTEnc#tests) and [Benchmarks](https://github.com/vteromero/VTEnc#benchmarks) below for further information. * `gov2.sorted`: - | ![Encoding speed vs ratio](doc/images/gov2_enc_speed_vs_ratio.png) | ![Decoding speed](doc/images/gov2_dec_speed.png) | - |:---:|:---:| + ![Encoding speed vs ratio](doc/images/gov2_enc_speed_vs_ratio.png) | ![Decoding speed vs ratio](doc/images/gov2_dec_speed_vs_ratio.png) + :---:|:---: + ![Encoding speed](doc/images/gov2_enc_speed.png) | ![Decoding speed](doc/images/gov2_dec_speed.png) - _(\*) VTEnc's results on "Encoding speed vs ratio" chart are for the following values of the encoding parameter `min_cluster_length`: 1, 2, 4, 8, 16, 32, 64, 128 and 256._ - _(\*\*) VTEnc's decoding speed is for `min_cluster_length` = 256._ + _(\*) VTEnc's results on "speed vs ratio" charts are for the following values of the encoding parameter `min_cluster_length`: 1, 2, 4, 8, 16, 32, 64, 128 and 256._ + _(\*\*) VTEnc's results on "speed" charts are for `min_cluster_length` = 256._ * Timestamps (`ts.txt`): - | ![Encoding speed vs ratio](doc/images/ts_enc_speed_vs_ratio.png) | ![Decoding speed](doc/images/ts_dec_speed.png) | - |:---:|:---:| + ![Encoding speed vs ratio](doc/images/ts_enc_speed_vs_ratio.png) | ![Decoding speed vs ratio](doc/images/ts_dec_speed_vs_ratio.png) + :---:|:---: + ![Encoding speed](doc/images/ts_enc_speed.png) | ![Decoding speed](doc/images/ts_dec_speed.png) ## API diff --git a/doc/images/gov2_dec_speed.png b/doc/images/gov2_dec_speed.png index 91e2819..4d41959 100644 Binary files a/doc/images/gov2_dec_speed.png and b/doc/images/gov2_dec_speed.png differ diff --git a/doc/images/gov2_dec_speed_vs_ratio.png b/doc/images/gov2_dec_speed_vs_ratio.png new file mode 100644 index 0000000..e6c1637 Binary files /dev/null and b/doc/images/gov2_dec_speed_vs_ratio.png differ diff --git a/doc/images/gov2_enc_speed.png b/doc/images/gov2_enc_speed.png new file mode 100644 index 0000000..77a8370 Binary files /dev/null and b/doc/images/gov2_enc_speed.png differ diff --git a/doc/images/gov2_enc_speed_vs_ratio.png b/doc/images/gov2_enc_speed_vs_ratio.png index a494f98..52b48a9 100644 Binary files a/doc/images/gov2_enc_speed_vs_ratio.png and b/doc/images/gov2_enc_speed_vs_ratio.png differ diff --git a/doc/images/ts_dec_speed.png b/doc/images/ts_dec_speed.png index a6197a9..0f1b804 100644 Binary files a/doc/images/ts_dec_speed.png and b/doc/images/ts_dec_speed.png differ diff --git a/doc/images/ts_dec_speed_vs_ratio.png b/doc/images/ts_dec_speed_vs_ratio.png new file mode 100644 index 0000000..6581b21 Binary files /dev/null and b/doc/images/ts_dec_speed_vs_ratio.png differ diff --git a/doc/images/ts_enc_speed.png b/doc/images/ts_enc_speed.png new file mode 100644 index 0000000..ec2a899 Binary files /dev/null and b/doc/images/ts_enc_speed.png differ diff --git a/doc/images/ts_enc_speed_vs_ratio.png b/doc/images/ts_enc_speed_vs_ratio.png index 6aa832c..0ecba56 100644 Binary files a/doc/images/ts_enc_speed_vs_ratio.png and b/doc/images/ts_enc_speed_vs_ratio.png differ