2f82381Update benchmark results from 2025-07-24 16:44:35 [skip ci]GitHub Actions Bot 1# benchcompress
3A benchmarking framework for evaluating compression algorithms on scientific data arrays.
5Latest benchmark results: https://magland.github.io/benchcompress/
7Paper (WIP): https://magland.github.io/benchcompress/paper
9## Overview
11Benchcompress is a comprehensive benchmarking framework for evaluating compression algorithms on scientific data arrays. The system follows an automated workflow:
131. **Defining Components**
14 - Algorithms are implemented in `benchcompress/src/benchcompress/algorithms/`
15 - Datasets are defined in `benchcompress/src/benchcompress/datasets/`
16 - Each component specifies metadata like version, tags, and compatibility requirements
182. **Automated Benchmarking**
19 - Benchmarks run automatically via GitHub Actions on pushes to main branch
20 - For each compatible algorithm-dataset pair, measures:
21 - Compression ratio
22 - Encoding throughput (MB/s)
23 - Decoding throughput (MB/s)
24 - Results are verified by decompressing and comparing with original data
263. **Result Storage**
27 - Results are committed to a dedicated `benchmark-results` branch
28 - Local and remote caching system prevents redundant rerunning of benchmarks (only modified or added components are re-benchmarked)
29 - Caching is based on algorithm and dataset versions
314. **Web Interface**
32 - Interactive visualization at https://magland.github.io/benchcompress/
33 - Filter and sort results by dataset or algorithm
34 - Visual charts for comparing performance metrics
35 - Export results to CSV for further analysis
37## For developers
39The project consists of two main components:
41- `benchcompress/`: Python package containing the core benchmarking framework, algorithms, and datasets
42- `web-ui/`: React-based web interface for visualizing benchmark results
44### Local Development Setup
461. Install Python dependencies:
47```bash
48# You may need to first install wavpack
49# apt-get install libwavpack-dev
51cd benchcompress
52pip install -e .
54benchcompress --help
55benchcompress list
56benchcompress run --help
57```
592. Install web UI dependencies:
60```bash
61cd web-ui
62npm install
63```
653. Run web UI locally:
66```bash
67cd web-ui
68npm run dev
69```
71### Code Formatting
73This project uses pre-commit hooks to automatically check format code before each commit. The formatting includes:
74- Python code formatting using black
75- TypeScript/JavaScript code formatting using npm scripts
76- C++ code formatting using clang-format
78To set up the pre-commit hooks after cloning the repository:
801. Install pre-commit:
81```bash
82pip install pre-commit
83```
852. Install the git hook scripts:
86```bash
87pre-commit install
88```
90After this setup, code will be automatically checked for formatting when you make a commit.
92Running `./devel/format_code.sh` which will format all code in the repository.