Re: Timing in Mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg74739] Re: Timing in Mathematica
- From: "Szabolcs" <szhorvat at gmail.com>
- Date: Tue, 3 Apr 2007 00:26:54 -0400 (EDT)
- References: <euqnqt$8br$1@smc.vnet.net>
amitsoni.1984 at gmail.com =EDrta:
> Hi,
>
> I am using Timing[.......] to calculate the time taken by an
> expression in Mathematica. But it is not showing values below 0.01
> seconds. For values below 0.01s it just shows 0. Second
>
> Is it possible to get the value of time lower than 0.01s by somehow
> lowering the least count. I am using Mathematica 5.2 on Windows. I was
> getting lower values of time on Mathematica(5.2) on a Linux computer.
>
> Thank you,
> Amit
After doing some experimentation, I found that on my system
AbsoluteTiming returns integer multiples of 0.015625 seconds. Timing
returns the same values, but rounded to $TimeValue of 0.001.
(Mathematica 5.2 on WinXP SP2)
But you still shouldn't assume that timings are precise to 0.015625.
For some reason, when I record several timing values with Table, the
first one is always larger then the rest (significantly larger for
short times).
Here are two examples with very short timings:
Table[First@
AbsoluteTiming[Do[NSum[i,{i,1,1000}],{1000}]]/Second,{100}]/
0=2E015625
{36.,25.,26.,27.,29.,29.,28.,28.,27.,27.,26.,26.,26.,26.,25.,26.,25.,26.,26=
.,\
25.,26.,25.,26.,25.,26.,28.,25.,27.,26.,27.,26.,25.,27.,26.,26.,25.,26.,27.=
,\
26.,26.,25.,26.,27.,25.,26.,25.,25.,28.,26.,26.,28.,25.,26.,25.,27.,26.,26.=
,\
26.,26.,26.,25.,25.,26.,26.,29.,25.,26.,25.,25.,26.,25.,26.,25.,25.,26.,27.=
,\
25.,26.,25.,26.,25.,25.,26.,25.,25.,26.,25.,25.,26.,25.,25.,26.,25.,26.,25.=
,\
25.,25.,26.,25.,26.}
Table[First@
AbsoluteTiming[Do[NSum[i,{i,1,1000}],{100}]]/Second,{100}]/
0=2E015625
{6.,6.,2.,3.,2.,3.,2.,3.,2.,3.,2.,3.,2.,3.,2.,3.,2.,3.,2.,3.,2.,3.,2.,3.,2.=
,3.\
,
3=2E,2.,3.,2.,3.,2.,3.,2.,3.,2.,3.,2.,3.,2.,3.,2.,3.,2.,3.,2.,3.,2.,3.,3.,2=
.,3.\
,
2=2E,3.,2.,3.,2.,3.,2.,3.,2.,3.,3.,2.,3.,2.,3.,2.,3.,3.,2.,3.,2.,3.,2.,3.,2=
.,3.\
,3.,2.,3.,2.,3.,2.,3.,2.,3.,2.,3.,3.,2.,3.,2.,3.,3.,2.,3.,2.,3.,2.}
Other calculations inside Do[] or using Timing instead of
AbsoluteTiming give similar results.
I hope that this will persuade you not try to measure very short
execution times.