Dear All,
I’m attempting to go full Julia and not store functions in a type. The meat of my problem requires doing a some quadrature using QuadGK.jl on the product of some bessel functions using SpecialFunctions.jl and a function or it’s derivative. I’m always able to take the derivative by hand so I don’t rely on automatic differentiation. Please see this gist which contains a MWE with enough complexity to represent the broader problem.
The gist contains four files

Main.jl
; to run the code dojulia Main.jl
from e.g. the terminal 
Work.jl
; where the calculations are actually performed 
Objects.jl
; contains my OOP approach 
Functionals.jl
; contains what I hope is a Julian approach
I need to do some complicated operations deep down in my source code and have them configurable by the user. I have coded up an OOP approach which stores complicated functions in a type
and passing that as an argument; see Objects.jl
. For a more Julian approach I create a concrete type
and make it callable with different arguments from inside Main.jl
. I’ve also written a more hard coded approach which is in Work.jl
.
Using BenchmarkTools
gives me some strange results. The OOP and hardcoded approaches run in the same amount of time while my Julian attempt takes 23 times longer. The Julian attempt does far more allocations too.
Any comments and improvements are welcome!
My version info:
julia> versioninfo()
Julia Version 0.6.4pre.2
Commit 003c43eed2* (20180605 13:07 UTC)
Platform Info:
OS: macOS (x86_64appledarwin17.5.0)
CPU: Intel(R) Core(TM) i75557U CPU @ 3.10GHz
WORD_SIZE: 64
BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell MAX_THREADS=16)
LAPACK: libopenblas64_
LIBM: libopenlibm
LLVM: libLLVM3.9.1 (ORCJIT, broadwell)