Hi Tim,

Are you saying that if one removed bounds-checking from the LinSpace 
iterator, my code below would be much faster? 
(a) Why would there even have to be a bounds check in such an iterator?
(b) That still won't let me use AppleAccelerate, which I suspect requires a 
plain old array.

Christoph


On Thursday, 22 October 2015 15:18:12 UTC+1, Tim Holy wrote:
>
> I may have said this earlier, but we just need 
> https://github.com/JuliaLang/julia/issues/7799. 
>
> --Tim 
>
> On Thursday, October 22, 2015 12:11:05 AM Christoph Ortner wrote: 
> > So here is a reason for keeping the linespace a vector: 
> > 
> > julia> t = linspace(0, 1, 1_000_000); 
> > julia> s = collect(t); 
> > julia> @time for n = 1:10; exp(t); end 
> >   0.209307 seconds (20 allocations: 76.295 MB, 3.42% gc time) 
> > julia> @time for n = 1:10; exp(s); end 
> >   0.054603 seconds (20 allocations: 76.295 MB, 17.66% gc time) 
> > julia> @time for n = 1:10; AppleAccelerate.exp(s); end 
> >   0.016640 seconds (40 allocations: 76.295 MB, 31.64% gc time) 
> > julia> @time for n = 1:10; AppleAccelerate.exp!(s,s); end 
> >   0.005702 seconds 
> > 
> > Now the natural response will be to say that most of the time I won't 
> care 
> > so much about performance, and when I do, then I can go optimise. But in 
> > truth the same can be said about keeping linspace abstract just because 
> it 
> > saves memory. (obviously it is not faster!) 
> > 
> > I think the argument for abstract types is very strong, but (in my 
> personal 
> > view) not at the expense of expected behaviour. 
> > 
> > Christoph 
>
>

Reply via email to