Benchmarks

Performance comparison against Interpolations.jl and DataInterpolations.jl.

Setup

cd benchmark
julia --project=. -e 'using Pkg; Pkg.instantiate()'

Configuration

The benchmark duration is set to DEFAULT_BENCH_SECONDS = 0.5 in simple_benchmarks.jl for faster iteration. For more accurate results, increase this value to 5 or higher:

# In simple_benchmarks.jl, line 39
const DEFAULT_BENCH_SECONDS = 5.0  # More accurate results

Note: The result plots below were generated with DEFAULT_BENCH_SECONDS = 5.0 or higher.

Usage

using Pkg; Pkg.activate(".") # assuming `benchmark` is working directory
include("simple_benchmarks.jl")
include("plot_scaling.jl")

# Run full scaling benchmark
result = benchmark_scaling()

# Generate plots
plot_scaling_results(result) # combined plot
plot_scaling_separate(result; save_dir="../docs/images", dpi=250)

Output

  • result.construction - Construction time vs grid size (5 to 1000 points)
  • result.evaluation - Evaluation time vs query points (1 to 10000, fixed grid n=100)
  • result.oneshot - One-shot (construction + evaluation) time with cache-hit/miss comparison

Results

One-Shot (Construction + Evaluation)

One-Shot

Combined construction + evaluation time per call (fixed grid size n=100, varying query points).

CI Benchmarking (Regression Tests)

The ci_benchmark.jl script is used in the GitHub Actions CI workflow to monitor and prevent performance regressions. You can run it locally to test code changes against a baseline or profile specific components.

Basic Usage

Run all benchmark groups in the suite:

cd benchmark && julia --project=. ci_benchmark.jl

Filtering Groups

Since the full suite runs a large combination of benchmarks, you can easily control which groups are executed by passing arguments to the script. The script supports group numbers, exact group keys, or general substrings:

  • By Group Number (runs only group 16, 16_phs):

    cd benchmark && julia --project=. ci_benchmark.jl 16
  • By Substring (runs every group whose key contains the text — phs matches 16_phs):

    cd benchmark && julia --project=. ci_benchmark.jl phs
  • By Exact Key:

    cd benchmark && julia --project=. ci_benchmark.jl 16_phs
  • Combining Multiple Filters (runs group 9 and group 16):

    cd benchmark && julia --project=. ci_benchmark.jl 9 16

Comparing Against Baselines

To verify performance against a previously saved JSON baseline and trigger automated regression checks:

cd benchmark && julia --project=. ci_benchmark.jl --baseline output.json