All are solved at reltol=1e-3, abstol=1e-6
using the fastest ODE solver of the respective package for the given problem.
- SciPy LSODA through odeint takes ~489μs
- SciPy LSODA through odeint with Numba takes ~257μs
- NumbaLSODA takes ~25μs
- DifferentialEquations.jl Rosenbrock23 takes ~9.2μs
- SciPy LSODA through odeint takes 53x as long
- SciPy LSODA through odeint with Numba takes 28x as long
- numbalsoda takes 2.7x as long
Alright, updated. Note that symbolic Jacobians don't actually matter for static array problems since for that size forward mode autodiff (which is automatic in the backend) tends to be as efficient if under the default chunk size (in fact you get a little bit better SIMD). I was just lazy in the updating.
Why would that be interesting? I assume most users would use the fastest and most accurate method for the given problem, not be like "oh in DifferentialEquations.jl I should use a slow method because Python only has slow methods". Maybe I'm not the most standard user, but I would think most people looking at this kind of case (i.e. clinical pharmacology) care about picking the method that is most efficient 🤷