hi tim - True! (why on earth would I do that?) defining it outside reproduces the speed gain. thanks!
On 16 June 2014 18:30, Tim Holy <[email protected]> wrote: > From the sound of it, one possibility is that you made it a "private > function" > inside the computeTuned function. That creates the equivalent of an > anonymous > function, which is slow. You need to make it a generic function (define it > outside computeTuned). > > --Tim > > On Monday, June 16, 2014 06:16:49 PM Florian Oswald wrote: > > interesting! > > just tried that - I defined mylog inside the computeTuned function > > > > > https://github.com/floswald/Comparison-Programming-Languages-Economics/blob/ > > master/julia/floswald/model.jl#L193 > > > > but that actually slowed things down considerably. I'm on a mac as well, > > but it seems that's not enough to compare this? or where did you define > > this function? > > > > > > On 16 June 2014 18:02, Andreas Noack Jensen < > [email protected]> > > > > wrote: > > > I think that the log in openlibm is slower than most system logs. On my > > > mac, if I use > > > > > > mylog(x::Float64) = ccall((:log, "libm"), Float64, (Float64,), x) > > > > > > the code runs 25 pct. faster. If I also use @inbounds and devectorise > the > > > max(abs) it runs in 2.26 seconds on my machine. The C++ version with > the > > > XCode compiler and -O3 runs in 1.9 seconds. > > > > > > > > > 2014-06-16 18:21 GMT+02:00 Florian Oswald <[email protected]>: > > > > > > Hi guys, > > > > > >> thanks for the comments. Notice that I'm not the author of this code > [so > > >> variable names are not on me :-) ] just tried to speed it up a bit. In > > >> fact, declaring types before running the computation function and > using > > >> @inbounds made the code 24% faster than the benchmark version. here's > my > > >> attempt > > >> > > >> > > >> > https://github.com/floswald/Comparison-Programming-Languages-Economics/tr > > >> ee/master/julia/floswald > > >> > > >> should try the Base.maxabs. > > >> > > >> in profiling this i found that a lot of time is spent here: > > >> > > >> > > >> > https://github.com/floswald/Comparison-Programming-Languages-Economics/bl > > >> ob/master/julia/floswald/model.jl#L119 > > >> > > >> which i'm not sure how to avoid. > > >> > > >> On 16 June 2014 17:13, Dahua Lin <[email protected]> wrote: > > >>> First, I agree with John that you don't have to declare the types in > > >>> general, like in a compiled language. It seems that Julia would be > able > > >>> to > > >>> infer the types of most variables in your codes. > > >>> > > >>> There are several ways that your code's efficiency may be improved: > > >>> > > >>> (1) You can use @inbounds to waive bound checking in several places, > > >>> such as line 94 and 95 (in RBC_Julia.jl) > > >>> (2) Line 114 and 116 involves reallocating new arrays, which is > probably > > >>> unnecessary. Also note that Base.maxabs can compute the maximum of > > >>> absolute > > >>> value more efficiently than maximum(abs( ... )) > > >>> > > >>> In terms of measurement, did you pre-compile the function before > > >>> measuring the runtime? > > >>> > > >>> A side note about code style. It seems that it uses a lot of Java-ish > > >>> descriptive names with camel case. Julia practice tends to encourage > > >>> more > > >>> concise naming. > > >>> > > >>> Dahua > > >>> > > >>> On Monday, June 16, 2014 10:55:50 AM UTC-5, John Myles White wrote: > > >>>> Maybe it would be good to verify the claim made at > > >>>> https://github.com/jesusfv/Comparison-Programming-> >>>> > Languages-Economics/blob/master/RBC_Julia.jl#L9 > > >>>> > > >>>> I would think that specifying all those types wouldn’t matter much > if > > >>>> the code doesn’t have type-stability problems. > > >>>> > > >>>> — John > > >>>> > > >>>> On Jun 16, 2014, at 8:52 AM, Florian Oswald <[email protected]> > > >>>> > > >>>> wrote: > > >>>> > Dear all, > > >>>> > > >>>> > I thought you might find this paper interesting: > > >>>> http://economics.sas.upenn.edu/~jesusfv/comparison_languages.pdf > > >>>> > > >>>> > It takes a standard model from macro economics and computes it's > > >>>> > > >>>> solution with an identical algorithm in several languages. Julia is > > >>>> roughly > > >>>> 2.6 times slower than the best C++ executable. I was bit puzzled by > the > > >>>> result, since in the benchmarks on http://julialang.org/, the > slowest > > >>>> test is 1.66 times C. I realize that those benchmarks can't cover > all > > >>>> possible situations. That said, I couldn't really find anything > unusual > > >>>> in > > >>>> the Julia code, did some profiling and removed type inference, but > > >>>> still > > >>>> that's as fast as I got it. That's not to say that I'm > disappointed, I > > >>>> still think this is great. Did I miss something obvious here or is > > >>>> there > > >>>> something specific to this algorithm? > > >>>> > > >>>> > The codes are on github at > > >>>> > > > >>>> > > https://github.com/jesusfv/Comparison-Programming-Languages-Economics > > > > > > -- > > > Med venlig hilsen > > > > > > Andreas Noack Jensen > >
