I’d also note that benchmarks highly depends on the characteristics of the integrand function, it’s hard to provide benchmarks that cover all possible cases. As an example, among the methods provided by Cuba.jl
, cuhre
tends to be the fastest and most accurate one in many cases, but if the function has some very sharp peaks whose position is known, divonne
is a much better choice as you can provide the position of the peaks in order to increase sampling around them (to be honest, I’ve never used this feature in Cuba.jl
even though it should be somewhat exposed, I did it some years ago with the Fortran library).
To summarise, you should really benchmark the different methods with your integrand function.