chore: introduce DEBUG COMPRESSION (#4620)

This function analyzes the compressability of the keys
using a single huffman tree. For example,

```
>debug POPULATE 1000000 keyabcdef 10
OK

> debug compression
 1) max_symbol
 2) (integer) 121
 3) max_bits
 4) (integer) 5
 5) raw_size
 6) (integer) 7861817
 7) compressed_size
 8) (integer) 4372270
 9) ratio
10) "0.5561398847111297"
```

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
This commit is contained in:
Roman Gershman 2025-03-02 21:29:19 +02:00 committed by GitHub
parent afad75f17b
commit 77b9a8f699
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 539 additions and 13 deletions

View file

@ -15,22 +15,22 @@ but you can also run Dragonfly on older kernels as well.
On Debian/Ubuntu:
```bash
sudo apt install ninja-build libunwind-dev libboost-fiber-dev libssl-dev \
autoconf-archive libtool cmake g++ libzstd-dev bison libxml2-dev zlib1g-dev
sudo apt install ninja-build libunwind-dev libboost-context-dev libssl-dev \
autoconf-archive libtool cmake g++ bison zlib1g-dev
```
On Fedora:
```bash
sudo dnf install -y automake boost-devel g++ git cmake libtool ninja-build libzstd-devel \
openssl-devel libunwind-devel autoconf-archive patch bison libxml2-devel libstdc++-static
sudo dnf install -y automake boost-devel g++ git cmake libtool ninja-build \
openssl-devel libunwind-devel autoconf-archive patch bison libstdc++-static
```
On openSUSE:
```bash
sudo zypper install automake boost-devel gcc-c++ git cmake libtool ninja libzstd-devel \
openssl-devel libunwind-devel autoconf-archive patch bison libxml2-devel \
sudo zypper install automake boost-devel gcc-c++ git cmake libtool ninja \
openssl-devel libunwind-devel autoconf-archive patch bison \
libboost_context-devel libboost_system-devel
```