Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Expression timing; a black art?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg63251] Re: [mg63234] Expression timing; a black art?
  • From: "Carl K. Woll" <carlw at wolfram.com>
  • Date: Tue, 20 Dec 2005 23:35:35 -0500 (EST)
  • References: <200512200919.EAA28501@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

AES wrote:
> OK, to follow up on my own recent post, I did some timing tests for the 
> function I asked about earlier, as a function or as a Module[] with a 
> repeated square root pulled out.  To say the results are puzzling (to 
> me, anyway) is putting it mildly.
> 
> Approach: Create a notebook with three sections, each of the form:
> 
>    x; Remove["Global`*"];
>    fn :=  (function as below)
>    a=0.12; xmax=3.5; dx=0.1;
>    tn=Timing[Table[{x, fn[a,x]//N}, {x,0,xmax,dx}]]; 
> 
> where the three functions "fn" are:
> 
> f1[a_,x_] := Sum[Exp[-(Pi a n)^2-
>    ((x-n Sqrt[1-(Pi a^2)^2])/a)^2],
>    {n,-Infinity,Infinity}];
> 
> f2[a_,x_] := Module[{b},      
>    b=Sqrt[1-(Pi a^2)^2];      
>    Sum[Exp[-(Pi a n)^2-((x-n b)/a)^2],
>    {n,-Infinity,Infinity}]];
> 
> f3[a_,x_] := Module[{b,c1,c2},      
>    b=Sqrt[1-(Pi a^2)^2];      
>    c1=(Pi a)^2;      
>    c2=1/a^2;      
>    Sum[Exp[-c1 n^2-c2(x-n b)^2],
>    {n,-Infinity,Infinity}]];
> 
> Summary of results to date:
> 
> 1)  Open Mathematica, run notebook first time with functions in f1, f2, 
> f3 order.  Timings are (in round numbers, +/-10%) t1 = 30 sec, t2 = 5 
> sec, t3 = 20 sec.
> 
> 2)  Re-run same notebook from top:  Timings are now 5 sec, 5 sec, 5 sec.  
> Clearly Mathematica is remembering *something* from the first run, despite the 
> Remove[Global] in each section . . . ?
> 
> 3)  Quit Mathematica, re-Open, reorder sections in f2, f1, f3 order.  Timings on 
> first run are now t2 = 30 sec, t1 = 5 sec, t3 = 20 sec; timings on 
> second run are again 5, 5, 5 sec.  
> 
> 4)  Quit Mathematica, re-Open, reorder sections in f3, f2, f1 order.  Timings on 
> first run are 30, 20, 5 sec.
>
> Conclusion #1:  Running *either* f1 or f2 once leaves something (?) in 
> the kernel that greatly speeds up the f2 or f1, and gives a little help 
> to f3.  Running f3 first gives a little help to f2 (30 down to 20), and 
> probably also to f1 (didn't try), but doesn't push it all the way down 
> to 5.
> 
> Conclusion #2:  Using modular form with Sqrt[] pulled out doesn't help 
> at all.
> 
> Conclusion #3:  If a naive user like me had only done the very first 
> test above, I'd have been left believing that pulling the Sqrt[] out 
> *did* help.
> 
> Conclusion #4:  Trying to understand Mathematica timing is a very black art.
> 
> Hypothesis:  Running any of these functions on a *random* set of values 
> the first time, then another random set the second time, will *not* 
> speed up the second run for either the same fn or any of the other ones.  
> Anyone want to predict if this is so?

Mathematica caches some results. If you want to clear these cached 
values, use Developer`ClearCache[]. In your example, running ClearCache 
before the second run should result in similar times for the second run 
as the first run.

Carl Woll
Wolfram Research


  • Prev by Date: Re: Speeding up simple Mathematica expressions?
  • Next by Date: Re: Unexpected behavior of Simplify
  • Previous by thread: Re: Expression timing; a black art?
  • Next by thread: Converting Strings to Ints.