Alternate to for-loop
Stefan Evert wrote:
hmm, would you be saying that r's vectorised performance is overhyped? or is it just that non-vectorised code in r is slow?
What I meant, I guess, was (apart from a little bit of trolling) that
I'd had misconceptions about the speed differences between loops and
vectorised code. In particular, I had entertained the naive belief
that vectorised solutions are always highly efficient (I wonder if I'm
the only one who was naive enough to think this ..), so I was very
much surprised to find a loop in an interpreted language like Lua to
be faster than vectorised R code.
My silly little benchmark translated the Lua code
sum = 0
for i=1,N do sum = sum + i end
into vectorised R
sum(as.numeric(1:N))
what you're benchmarking here is a lump of vector allocation and the
actual summing. assuming that you already have generated and stored the
values to be summed, the runtime differs a bit:
system.time(sum(as.numeric(1:10^8)))
system.time({ x = 1:10^8 })
system.time({ y = as.numeric(x) })
system.time(sum(y))
though again, it's a factor below one order of magnitude.
vQ