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:
and ; Gumbel:
and ; Gaussian:
and .
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:
and ; Gaussian:
and .
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.
| Model | Dimension | Parameter | Operation | Workload | Julia median | R median | R / Julia |
|---|---|---|---|---|---|---|---|
| Clayton | 2 | θ=2 | Sampling | 10,000 draws | 5.85 ms | 900.0 μs | 0.15× |
| Clayton | 2 | θ=2 | 10,000 points | 1.93 ms | 33.6 ms | 17.42× | |
| Clayton | 2 | θ=2 | CDF | 1,000 points | 79.51 μs | 120.0 μs | 1.51× |
| Clayton | 2 | θ=2 | Fit (inverse Kendall's τ) | 2,000 observations | 175.55 μs | 800.0 μs | 4.56× |
| Gumbel | 2 | θ=2 | Sampling | 10,000 draws | 1.69 ms | 2.4 ms | 1.42× |
| Gumbel | 2 | θ=2 | 10,000 points | 1.95 ms | 74.9 ms | 38.51× | |
| Gumbel | 2 | θ=2 | CDF | 1,000 points | 161.68 μs | 80.0 μs | 0.49× |
| Gumbel | 2 | θ=2 | Fit (inverse Kendall's τ) | 2,000 observations | 174.71 μs | 800.0 μs | 4.58× |
| Gaussian | 2 | ρ=0.5 | Sampling | 10,000 draws | 382.7 μs | 1.9 ms | 4.96× |
| Gaussian | 2 | ρ=0.5 | 10,000 points | 2.49 ms | 25.5 ms | 10.25× | |
| Gaussian | 2 | ρ=0.5 | CDF | 1,000 points | 110.84 ms | 196.0 ms | 1.77× |
| Gaussian | 2 | ρ=0.5 | Fit (inverse Kendall's τ) | 2,000 observations | 227.43 μs | 1.7 ms | 7.47× |
| Gumbel | 5 | θ=2 | Sampling | 10,000 draws | 2.61 ms | 4.0 ms | 1.53× |
| Gumbel | 5 | θ=2 | 10,000 points | 9.74 ms | 77.8 ms | 7.99× | |
| Gaussian | 10 | ρ=0.35 | Sampling | 10,000 draws | 1.86 ms | 10.0 ms | 5.36× |
| Gaussian | 10 | ρ=0.35 | 10,000 points | 11.33 ms | 31.7 ms | 2.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.
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.