Benchmarks

Cross-library timing comparison for:

  • FastTanhSinhQuadrature.jl
  • QuadGK.jl
  • HCubature.jl
  • Cubature.jl (h and p variants)
  • Cuba.jl (Vegas, Divonne, Cuhre, for >1D)
  • FastGaussQuadrature.jl (1D only)

Methodology

  • Domain: [-1,1]^d
  • Tolerances: rtol = 1e-6, atol = 1e-8
  • Max evaluations (external adaptive solvers): 200000
  • Timing: @belapsed with interpolation (samples=3, evals=1)

For this package we benchmark:

  • adaptive_integrate_* typed calls (minimal-dispatch adaptive path),
  • quad convenience calls,
  • precomputed-node _avx calls (with the smallest n that meets tolerance, if found).

Raw output files are generated at:

  • benchmark/results/timings.csv
  • benchmark/results/timings_full.md
  • benchmark/results/timings_summary.md

Timing Table

DimFunctionFTS adaptiveFTS quadFTS avxQuadGKHCubatureCubature hCubature pCuba VegasCuba DivonneCuba CuhreFastGauss
1D1/(1+25x^2)4058.00004126.0000217.0000375.00001.180e+041.385e+041.246e+04n/an/an/a97.0000
1D1/sqrt(1-x^2)1102.0000988.0000339.00006646.00001.836e+051.634e+05766.0000 *n/an/an/a9401.0000 *
1Dlog(1-x)1496.00001513.0000247.00003399.00004.422e+045.497e+04732.0000 *n/an/an/a9460.0000
1Dx^6 - 2x^3 + 0.52330.00002221.0000307.0000322.00007359.00001591.00003107.0000n/an/an/a77.0000
2D1/sqrt((1-x^2)(1-y^2))3240.00003383.0000578.0000n/a4.455e+072.752e+071468.0000 *2.470e+07 *3.780e+07 *2.308e+07 *n/a
2Dexp(x+y)1.602e+041.712e+04933.0000n/a7.078e+043.199e+043.125e+042.408e+07 *2.283e+072.523e+04n/a
2Dx^2 + y^23400.00003621.0000294.0000n/a5857.00001882.00007069.00002.351e+07 *2.297e+072.711e+04n/a
3D1/sqrt((1-x^2)(1-y^2)(1-z^2))7.509e+047.803e+04748.0000n/a2.778e+07 *2.071e+07 *3250.0000 *2.452e+07 *3.176e+07 *2.270e+07 *n/a
3Dexp(x+y+z)8.888e+058.946e+051.106e+04n/a3.228e+052.271e+056.014e+052.682e+07 *2.953e+07 *4.272e+04n/a
3Dx^2y^2z^25.562e+045.563e+04688.0000n/a9.873e+067.470e+061.751e+042.682e+07 *3.513e+07 *9.269e+06n/a

* indicates the method did not meet the requested tolerance on that case.

Running Benchmarks

julia --project=benchmark benchmark/benchmarks.jl