A GUI application for analyzing and comparing compression algorithms, built with Dear ImGui and C++17.
- Support for multiple compression algorithms:
- Gzip (with configurable compression levels)
- Archive+Gzip (for compressing multiple files into a single archive)
- Modern GUI built with Dear ImGui
- Comprehensive performance metrics:
- Compression ratio
- Compression time
- Decompression time
- Memory usage
- Entropy
- Throughput
- Multi-file selection and processing
- Export results in CSV or JSON format
- Cross-platform support (Windows, macOS, Linux)
- C++17 or later
- CMake 3.15 or later
- Required libraries (auto-fetched or installed via your package manager):
- Dear ImGui (auto-fetched)
- tinyfiledialogs (auto-fetched)
- nlohmann-json (auto-fetched)
- zlib (for Gzip compression)
- GLFW3
- OpenGL
brew install cmake zlib glfw nlohmann-json
Clone the repository and then build and run the application:
# Clone the repository
git clone https://github.com/Karan5352/data-compression-analyzer.git
cd data-compression-analyzer
# Build and run (from the project root)
rm -rf build && mkdir build && cd build && cmake .. && make && ./DataCompressionAnalyzer
- Launch the application
- Click "Open Files" to select one or more files for analysis
- Choose the compression algorithm:
- Gzip: Compresses individual files
- Archive+Gzip: Compresses multiple files into a single archive
- Adjust compression level (1-9) for both algorithms
- Click "Start Analysis" to begin compression
- View results in the interactive interface:
- Summary statistics
- Detailed results table
- Export results in CSV or JSON format
.
├── CMakeLists.txt
├── src/
│ ├── main.cpp
│ ├── gui/
│ │ ├── MainWindow.cpp
│ │ └── MainWindow.h
│ ├── compression/
│ │ ├── Compressor.cpp
│ │ ├── Compressor.h
│ │ ├── GzipCompressor.cpp
│ │ ├── GzipCompressor.h
│ │ ├── ArchiveCompressor.cpp
│ │ └── ArchiveCompressor.h
│ └── utils/
│ ├── FileHandler.cpp
│ └── FileHandler.h
├── LICENSE
└── README.md
- Configurable compression levels (1-9)
- Individual file compression
- Detailed performance metrics (ratio, time, entropy, throughput)
- Combines multiple files into a single archive
- Uses Gzip compression internally
- Preserves file structure and names
- Configurable compression levels
- Compression ratio calculation
- Compression and decompression timing
- Memory usage tracking
- Entropy calculation
- Throughput calculation
- Export functionality for further analysis
This project is licensed under the MIT License - see the LICENSE file for details.