8000 GitHub - bendichter/benchcompress: Benchmark compression algorithms for numeric arrays
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

bendichter/benchcompress

 
 

Repository files navigation

benchcompress

A benchmarking framework for evaluating compression algorithms on scientific data arrays.

Latest benchmark results: https://magland.github.io/benchcompress/

Paper (WIP): https://magland.github.io/benchcompress/paper

Overview

Benchcompress is a comprehensive benchmarking framework for evaluating compression algorithms on scientific data arrays. The system follows an automated workflow:

  1. Defining Components

    • Algorithms are implemented in benchcompress/src/benchcompress/algorithms/
    • Datasets are defined in benchcompress/src/benchcompress/datasets/
    • Each component specifies metadata like version, tags, and compatibility requirements
  2. Automated Benchmarking

    • Benchmarks run automatically via GitHub Actions on pushes to main branch
    • For each compatible algorithm-dataset pair, measures:
      • Compression ratio
      • Encoding throughput (MB/s)
      • Decoding throughput (MB/s)
    • Results are verified by decompressing and comparing with original data
  3. Result Storage

    • Results are committed to a dedicated benchmark-results branch
    • Local and remote caching system prevents redundant rerunning of benchmarks (only modified or added components are re-benchmarked)
    • Caching is based on algorithm and dataset versions
  4. Web Interface

    • Interactive visualization at https://magland.github.io/benchcompress/
    • Filter and sort results by dataset or algorithm
    • Visual charts for comparing performance metrics
    • Export results to CSV for further analysis

For developers

The project consists of two main components:

  • benchcompress/: Python package containing the core benchmarking framework, algorithms, and datasets
  • web-ui/: React-based web interface for visualizing benchmark results

Local Development Setup

  1. Install Python dependencies:
cd benchcompress
pip install -e .

benchcompress --help
benchcompress list
benchcompress run --help
  1. Install web UI dependencies:
cd web-ui
npm install
  1. Run web UI locally:
cd web-ui
npm run dev

Code Formatting

This project uses pre-commit hooks to automatically check format code before each commit. The formatting includes:

  • Python code formatting using black
  • TypeScript/JavaScript code formatting using npm scripts
  • C++ code formatting using clang-format

To set up the pre-commit hooks after cloning the repository:

  1. Install pre-commit:
pip install pre-commit
  1. Install the git hook scripts:
pre-commit install

After this setup, code will be automatically checked for formatting when you make a commit.

Running ./devel/format_code.sh which will format all code in the repository.

About

Benchmark compression algorithms for numeric arrays

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 51.1%
  • TypeScript 37.1%
  • C++ 6.4%
  • CSS 2.0%
  • TeX 1.3%
  • Shell 1.0%
  • Other 1.1%
0