It appears that execution times change drastically depending on function names and orderings! (This is in both firefox and chrome, on a macbook.) I tried copying the 2d array function and renaming it different things, and found different times, which often caused major differences in its relative order against the original function.
Also, running the test multiple times gives different enough results that orderings change.
Finally, I think the timing code needs some work. I remember John Resign had some posts on this. This is one of them:
http://ejohn.org/blog/javascript-benchmark-quality/
But I can't find another one where he talks about the fact that with very small times, timing functions in javascript give wildly varying values, because they depend on some sort of interrupt (maybe?)...