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 > >
