Check out https://gist.github.com/IainNZ/1afb9318c841c9bd2234
I get IAINMAC:Desktop idunning$ julia test.jl elapsed time: 0.006008895 seconds (2800048 bytes allocated) elapsed time: 0.011813825 seconds (2800048 bytes allocated) elapsed time: 0.33829981 seconds (2800048 bytes allocated) elapsed time: 0.004994186 seconds (2800048 bytes allocated) elapsed time: 0.006508385 seconds (2800048 bytes allocated) elapsed time: 0.056528559 seconds (2800048 bytes allocated) Which is pretty neat, and is generalized to work with any number type. I wouldn't put much stock in the DataFrames times - the performance isn't going to be great. The "pure" data times though, those surprise me - I don't get how LuaJIT is generating better code for something so simple. On Sunday, November 30, 2014 9:10:37 PM UTC-5, Andreas Noack wrote: > > Hi Joseph > > I just tried to run your code and I get approximately the same numbers for > Julia and I couldn't see any obvious errors in your implementation. > DataVectors have some overhead to allow for missing values, so I don't know > they can be made faster. > > It might be cheating in the comparison with LuaJit, but the code > vectorizes very nicely so if I add @simd before the inner for loop and > @inbounds before the line in that loop I get a five fold speed up on my > fairly new MacBook Pro. > > Andreas > > 2014-11-30 20:04 GMT-05:00 John Myles White <[email protected] > <javascript:>>: > >> Hi Joseph, >> >> Have you read >> http://julia.readthedocs.org/en/release-0.3/manual/performance-tips/ ? >> >> I didn't read your code in detail, but a superficial read suggests that >> your code has a lot of type-instability, which is a showstopper for Julia. >> >> -- John >> >> On Nov 30, 2014, at 4:58 PM, Joseph Ellsworth <[email protected] >> <javascript:>> wrote: >> >> Just finished some basic tests comparing the lua jit and Julia for the >> kinds of statistical functions we commonly compute. It essentially loads >> 70K 1 minute bar records and computes a sma(14) and sma(600) for every row >> in the file. This time I included source code so others can figure out >> what I missed. It is admittedly a simplified case but I have found that >> if this function runs fast the rest of our system tends to run fast so I >> consider it a realistic starting benchmark. >> >> http://bayesanalytic.com/lua_jit_faster_than_julia_stock_prediction/ >> >> The results were not what I expected. I expected Julia to blow away >> lua even with a jit due to the fact that I could allocate memory for result >> arrays in typed arrays in Julia as blocks and couldn't figure out how to do >> the same in lua. In addition the lua array index access seem more like a >> hash rather than a pure numeric array index which should give Julia a >> substantial advantage when looping across items in an array. What I >> found is that Lua jit out performed Julia in all but 1 test even if you >> don't consider Julia's horrible start-up performance. >> >> I am hoping that somebody finds a mistake that would make Julia out >> perform as I really want to love it. I like the Julia community I also >> really like the multi-dispatch function system. The Julia community seems >> to be working at a incredible velocity but Julia's poor error messages, >> slow startup time and letting lua beat them makes me skeptical for >> investing in it for larger projects. On the other-hand Lua has been >> around for a long time and is used as a scripting engine in many games and >> consoles and is unlikely to go away anytime soon. >> >> If any of you produce a better Julia version that performs better then >> let me know and I will add it to the original article. If any of you >> have a chance to port the same code to Python to using pypy, Java, Scala, >> C then let me know and I will add it to the original article. >> >> >> >
