Thanks. Maybe it's time to upgrade...

On Thursday, June 2, 2016 at 8:53:12 AM UTC-4, Yichao Yu wrote:
>
> On Thu, Jun 2, 2016 at 8:37 AM, Cedric St-Jean <cedric...@gmail.com 
> <javascript:>> wrote: 
> > I have two very similar functions that differ in only which function 
> they 
> > call 
> > 
> > function search_suspects_forward(...) 
> >     ... 
> >     searchsortedfirst(...) 
> > end 
> > 
> > function search_suspects_backward(...) 
> >     ... 
> >     searchsortedlast(...) 
> > end 
> > 
> > function foo() 
> >    search_suspects_forward(...) 
> > end 
> > 
> > Naturally, I'd like to refactor the common code 
> > 
> > function search_suspects(..., search_fun::Function) 
> >     ... 
> >     search_fun(...) 
> > end 
> > 
> > search_suspects_foward(...) = search_suspects(..., searchsortedfirst) 
> > ... 
> > 
> > But Julia doesn't specialize search_suspects based on search_fun (at 
> least 
> > on 0.4), which is a missed optimization opportunity. Is there any way to 
> do 
> > that? I could turn `search_fun` into a functor, but that kinda sucks (is 
> > there a way to do that automatically?) If I understand inlining 
> heuristics 
> > correctly, I would expect that `search_suspects_forward`, being a short 
> > function, will be inlined into `foo`, but what I want is for 
> > `search_suspects` to be inlined into `search_suspects_forward`. Are 
> there 
> > ways of communicating that to the compiler? Is there a @notinline? 
>
> Functor is the only way on 0.4. This is done automatically on 0.5. 
>

Reply via email to