awadell1 / PkgJogger.jl

Take your packages for a jog!
https://awadell1.github.io/PkgJogger.jl/stable/
GNU General Public License v3.0
21 stars 0 forks source link
benchmark benchmark-framework benchmarking github-actions julia julia-language

PkgJogger

Stable Dev Build Status Coverage Status

version pkgeval Downloads

PkgJogger provides a framework for running suites of BenchmarkTools.jl benchmarks without the boilerplate.

Just write benchmarks

Create a benchmark/bench_*.jl file, define a BenchmarkTools.jl suite and go!

using BenchmarkTools
using AwesomePkg
suite = BenchmarkGroup()
suite["fast"] = @benchmarkable fast_code()

PkgJogger will wrap each benchmark/bench_*.jl in a module and bundle them into JogAwesomePkg

using AwesomePkg
using PkgJogger

# Creates the JogAwesomePkg module
@jog AwesomePkg

# Warmup, tune, and run all of AwesomePkg's benchmarks
JogAwesomePkg.benchmark()

Benchmark, Revise, and Benchmark Again!

PkgJogger uses Revise.jl to track changes to your benchmark/bench_*.jl files and reload your suite as you edit. No more waiting for benchmarks to precompile!

Tracked Changes:

Current Limitations:

To get around the above, run @jog PkgName to get an updated jogger.

Note: Revise must be loaded first in order to track changes to your benchmark files.

Continuous Benchmarking Baked In!

Install PkgJogger, run benchmarks, and save results to a *.bson.gz with a one-line command.

julia -e 'using Pkg; Pkg.add("PkgJogger"); using PkgJogger; PkgJogger.ci()'

What gets done:

Or for a more lightweight option, use @test_bechmarks to run each benchmark once (No Warmup, tuning, etc.), as a smoke test against benchmarking regressions.