MathGroup Archive 2010

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

Search the Archive

Re: Code optimization

  • To: mathgroup at smc.vnet.net
  • Subject: [mg109783] Re: Code optimization
  • From: David Bailey <dave at removedbailey.co.uk>
  • Date: Mon, 17 May 2010 07:11:57 -0400 (EDT)
  • References: <hsofh5$3if$1@smc.vnet.net>

S. B. Gray wrote:
> Suppose I have an expression like
> 
> foo =(expression 1)/denominator + (expression 2)/denominator
> 
> where "denominator" is itself a complex expression. Is it worthwhile for 
> me to compute "denominator" once and use it explicitly in foo, or will 
> Mathematica cleverly deduce that it needs to be computed only once?
> 
> My guess is that Mathematica is an interpreter so it will not optimize the code.
> 
> Steve Gray
> 
A good way to check if an expression is evaluated once or several times, 
is to write a debugging function such as:

In[6]:= SetAttributes[xprint, HoldFirst];
xprint[x_] := Module[{ans = x},
    Print[Unevaluated[x], "=", ans];
    ans
    ];

In[8]:= xprint[2 + 2]

During evaluation of In[8]:= 2+2=4

Out[8]= 4

Note that this function returns the value of its argument, so it can be 
inserted into any expression. Functions like this also has more general 
use in debugging code.

David Bailey
http://www.dbaileyconsultancy.co.uk


  • Prev by Date: Re: Questions about Word Wrap etc.
  • Next by Date: Re: Random number generation( b/w two limits) with a gaussian
  • Previous by thread: Re: Code optimization
  • Next by thread: Questions about Word Wrap etc.