Hi, I'm a novice to Julia but have heard promising things and wanted to see if the language can help with a problem I'm working on. I have some Matlab code with some user-defined functions that runs a simulation in about ~1.4 seconds in Matlab (for a certain set of parameters that characterize a small problem instance). I translated the code into Julia, and to my surprise the Julia code runs 5x to 30x slower than the Matlab code. I'll be running this code on much larger problem instances many, many times (within some other loops), so performance is important here.
I created a GitHub gist that contains a stripped-down version of the Julia code that gets as close to (as I can find) the culprit of the problem. The gist is here: https://gist.github.com/anonymous/010bcbda091381b0de9e. A quick description: - set_up.jl sets up parameters and other items. - set_up_sim.jl sets up items particular to the simulation. - simulation.jl runs the simulation. - calc_net.jl, dist_o_i.jl, and update_w.jl are user-defined functions executed in the simulation. On my laptop (running in Juno with Julia version 0.3.10), this code yields: elapsed time: 43.269609577 seconds (20297989440 bytes allocated, 38.77% gc time) elapsed time: 38.500054653 seconds (20291872804 bytes allocated, 40.41% gc time) elapsed time: 40.238907235 seconds (20291869252 bytes allocated, 39.44% gc time) Why is so much memory used, and why is so much time spent in garbage collection? I'm familiar with http://docs.julialang.org/en/release-0.3/manual/performance-tips/ and have tried to follow these tips to the best of my knowledge. One example of what might be seen as low-hanging fruit: I tried removing the type declarations from my functions, but this actually increased the run-time of the code by a few seconds. Also, other permutations of the column orders pertaining to D, T, and I led to slower performance. I'm sure there are several issues at play here-- I'm just using Julia for the first time. Any tips would be greatly appreciated.
