Skip to content

code-bench/codebench

Repository files navigation

Automated code benchmark solution.

Empower developers with tools to trace and analyze project performances.

Build Status codecov.io Pypi Package version

Introduction

What is Codebench?

Codebench is a tool that runs user-defined benchmark programs, monitors system information and generates reports. It is most powerful when using in a project tracked by git. It runs benchmarks based on different commits and reports the system usage difference, so that users can compare and track performance changes of their project across commits. It can also be used in CI (Continuous Integration) to detect recent commits that increases/decreases project performance.

What Codebench is not?

Codebench itself does not provide benchmark programs. It is not smart enough to generate a benchmark program for your code. Instead, it can be considered as a wrapper or a supervisor for your benchmark.

Features

  • Normal Mode
    • comparison among commits
    • auto-generated report
  • CI Mode (in development)
    • comparison with baseline
    • auto-generated report
    • threshold alarms

Installation

Codebench can be simply installed by running:

pip install codebench

If you want to install from a source distribution, extract the tarball and run the following command:

python setup.py install

Usage

Command Line Interface

Codebench provides a command line interface. Run codebench -h for details.

Configuration File

Tired of typing command in CLI? Write a configuration file in yaml format! Take a look at a sample configuration file, or run codebench --init to help you generate one for your project.

Sample

See codebench-sample for details.

A quick demo is demonstrated below:

codebench --script ./benchmark.py \
--report_types chart --commits cb91b8 3cd96d bb1541

You may also run codebench directly in the root directory of sample project, since it has a .codebench.yml file in the root directory.

memory_usage elapsed_time cpu_usage

Packages

No packages published

Languages