Re: Unusual speedup of Table
- To: mathgroup at smc.vnet.net
- Subject: [mg25611] Re: [mg25605] Unusual speedup of Table
- From: Richard Palmer <mapsinc at bellatlantic.net>
- Date: Mon, 16 Oct 2000 03:04:36 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
on 10/11/00 3:50 AM, SATether at satether at aol.com wrote:
> Timing[Table[Switch[j, _, a[[j + 1]] - 2 a[[j]] + a[[j - 1]]], {j, 2, n -
> 1}];]
I think the problem is you are thinking procedurally and you have an example
of two procedures where one is more efficient than another. An even faster
way is to let Mathematica figure it out with something like
Take[ Append[Append[a, 0], 0] - 2Append[Prepend[a, 0], 0] +
Prepend[Prepend[a, 0], 0], -n];
which appears to be more than twice as quick (my timing runs) as your fast
alternative. The reason is I am using canned functions and they don't have
to interpret Mathematica code in some looping construct to do the job.
I'm sure my way won't be the fastest -- there are some smart programmers who
read this list. I suspect the winner will use something like listconvolve
Regards,
Richard Palmer