unexpected Timing results
- To: mathgroup at smc.vnet.net
- Subject: [mg115826] unexpected Timing results
- From: gleam at flashmail.com
- Date: Fri, 21 Jan 2011 04:35:57 -0500 (EST)
I experienced a couple of rather unexpected timing results today that
I am hoping can be explained to me.
In Mathematica 7.0.1:
ragged = RandomInteger[1*^6, #] &~Array~1000;
Do[PadLeft[ragged], {50}] // Timing
Do[PadLeft[ragged, {1000, 1000}], {50}] // Timing
Do[PadLeft[#, 1000] & /@ ragged, {50}] // Timing
{4.422, Null}
{4.406, Null}
{0.344, Null}
This difference I did not anticipate. I suppose this has something
to do with packed arrays, but I do not understand why the upper two
forms do not handle the task at least as well as the third one. I
expected a function that can be applied at the top level to be faster
that way, than when manually mapped.
Now, truly baffling to me is this:
padded = PadLeft[#, 1000] & /@ ragged;
Do[Accumulate[padded], {800}] // Timing
Do[Map[Accumulate, padded, {0}], {800}] // Timing
{5.109, Null}
{4.188, Null}
Should not these forms be identical, other than a slight overhead for
the Map function? How can Map[f, x, {0}] be faster than f[x] ? I
was sure this timing was a fluke, so I restarted Mathematica and
repeated it several times, and the result held.
Paul