Wow, I definitely see the point of having a single language for libraries 
and users...

Il giorno martedì 26 maggio 2015 16:31:23 UTC+2, Mauro ha scritto:
>
> The only thing I can spot is indeed the findnext function.  Higher order 
> functions are slow in Julia.  It's probably easiest if you just +/- dump 
> the code of findnext into your code: 
>
> julia> @edit findnext(x->x, [5.],1) 
>
> # returns the index of the next element for which the function returns 
> true 
> function findnext(testf::Function, A, start::Integer) 
>     for i = start:length(A) 
>         if testf(A[i]) 
>             return i 
>         end 
>     end 
>     return 0 
> end 
>
> On Tue, 2015-05-26 at 10:54, Andrea Cimatoribus <[email protected] 
> <javascript:>> wrote: 
> > Hi all, I am very new to Julia, and I am trying it with a dive-in 
> approach, 
> > translating of a python script of mine. The results are already 
> > encouraging, since I get almost the same performance as the highly 
> > optimized numpy code with trivial Julia code (finally I can write for 
> > cycles!), but I think (because I profiled) I would gain a lot from 
> > optimizing the following linearly interpolating function: 
> > 
> > function 
> interp1d(x::Array{Float64,1},x0::Array{Float64,1},y0::Array{Float64 
> > ,1}) 
> >     y = zeros(x)*NaN; 
> >     jj = 1 
> >     for ii in 1:length(y) 
> >         if x0[1]<x[ii]<x0[end] 
> >             jj = findnext(val->val>x[ii],x0,jj)-1; 
> >             y[ii] = y0[jj] + 
> (y0[jj+1]-y0[jj])/(x0[jj+1]-x0[jj])*(x[ii]-x0[ 
> > jj]); 
> >         end 
> >     end 
> >     return y; 
> > end 
> > 
> > 
> > I guess that findnext may not be the best choice, and possibly 
> > metaprogramming could help, but I am mostly new to it and I would 
> > appreciate some sort of introduction. Could someone point me to 
> resources 
> > to make progress, or do you have any suggestion? 
> > Thanks, 
> > Andrea 
>
>

Reply via email to