Skip to content

Performance benchmarks

Copulas.jl uses two complementary benchmark systems.

Performance over time

Tachometer runs the native Julia suite on pull requests, compares changes with their merge base, and records default-branch results. Its dashboard is published alongside this documentation at the Copulas.jl benchmark dashboard.

Comparison with R

The documentation build compares Copulas.jl with R's copula package. The table uses three representative models from their shared API: Clayton (lower-tail Archimedean), Gumbel (upper-tail Archimedean), and Gaussian (elliptical). The configurations are:

  • Clayton: d=2 and θ=2;

  • Gumbel: d=2 and θ=2;

  • Gaussian: d=2 and ρ=0.5.

For each model, the table measures sampling, PDF and CDF evaluation, and fitting by inversion of Kendall's tau. This is a useful common subset, not an exhaustive survey of either package. Two additional multivariate configurations probe how sampling and PDF evaluation scale with dimension:

  • Gumbel: d=5 and θ=2;

  • Gaussian: d=10 and ρ=0.35.

CDF and fitting remain bivariate so that the workloads and fitted parameter structures stay reasonably comparable.

The Julia documentation process measures the Julia operations directly and invokes one Rscript process for their R equivalents. Both languages are warmed up before five timing samples are collected, with inexpensive operations batched to improve timer resolution. Package loading, Julia compilation, and R process startup are excluded. The resulting table is inserted as part of Documenter's evaluation of this page, so every preview and release page shows numbers measured by its own workflow run.

Results from this documentation build

Generated at 2026-08-11T14:50:30Z from 66b0f493.

ModelDimensionParameterOperationWorkloadJulia medianR medianR / Julia
Clayton2θ=2Sampling10,000 draws5.85 ms900.0 μs0.15×
Clayton2θ=2PDF10,000 points1.93 ms33.6 ms17.42×
Clayton2θ=2CDF1,000 points79.51 μs120.0 μs1.51×
Clayton2θ=2Fit (inverse Kendall's τ)2,000 observations175.55 μs800.0 μs4.56×
Gumbel2θ=2Sampling10,000 draws1.69 ms2.4 ms1.42×
Gumbel2θ=2PDF10,000 points1.95 ms74.9 ms38.51×
Gumbel2θ=2CDF1,000 points161.68 μs80.0 μs0.49×
Gumbel2θ=2Fit (inverse Kendall's τ)2,000 observations174.71 μs800.0 μs4.58×
Gaussian2ρ=0.5Sampling10,000 draws382.7 μs1.9 ms4.96×
Gaussian2ρ=0.5PDF10,000 points2.49 ms25.5 ms10.25×
Gaussian2ρ=0.5CDF1,000 points110.84 ms196.0 ms1.77×
Gaussian2ρ=0.5Fit (inverse Kendall's τ)2,000 observations227.43 μs1.7 ms7.47×
Gumbel5θ=2Sampling10,000 draws2.61 ms4.0 ms1.53×
Gumbel5θ=2PDF10,000 points9.74 ms77.8 ms7.99×
Gaussian10ρ=0.35Sampling10,000 draws1.86 ms10.0 ms5.36×
Gaussian10ρ=0.35PDF10,000 points11.33 ms31.7 ms2.8×

Five timing samples; median steady-state time per evaluation. Cheap operations are batched to improve timer resolution. Runner: Linux / x86_64. Julia 1.12.6 with Copulas.jl 0.1.40; R version 4.6.1 (2026-06-24) with copula 1.1.7.

Tip: Interpreting results

These are lightweight, indicative measurements from shared GitHub-hosted runners, not a controlled benchmarking study. Small differences should not be interpreted as universal performance claims.