Re: compile / optimize
- To: mathgroup at smc.vnet.net
- Subject: [mg53716] Re: compile / optimize
- From: Paul Abbott <paul at physics.uwa.edu.au>
- Date: Mon, 24 Jan 2005 03:37:51 -0500 (EST)
- Organization: The University of Western Australia
- References: <comgvp$9hg$1@smc.vnet.net> <copavk$ps8$1@smc.vnet.net> <csl1pm$6ve$1@smc.vnet.net> <csnstt$4cr$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
In article <csnstt$4cr$1 at smc.vnet.net>,
"Jens-Peer Kuska" <kuska at informatik.uni-leipzig.de> wrote:
> ff = Experimental`OptimizeExpression[
> Module[{x = 0}, Do[x += Sin[t^2]/(1 + x), {12}]; x]]
>
>
> myfun=Compile[{{t, _Real}}, Evaluate[ff]]
However, using OptimizeExpression with Compile does not give any speed
up for the given problem. Compare the following timings:
g = Nest[Function[t, (t + x/t)/2], x, 15];
f1 = Compile[{{x, _Real}}, Evaluate[g]];
First[Timing[vals1 = f1 /@ Range[0.1, 20., 0.001]; ]]
0.11 Second
f2 = Compile[{{x, _Real}},
Evaluate[Experimental`OptimizeExpression[Evaluate[g]]]];
First[Timing[vals2 = f2 /@ Range[0.1, 20., 0.001]; ]]
0.1 Second
vals1 == vals2
True
Cheers,
Paul
> "Frank Brand" <frank.brand at t-online.de> schrieb im Newsbeitrag
> news:csl1pm$6ve$1 at smc.vnet.net...
> > Dear mathgroup members,
> >
> > can anybody give me an advice how to generally
> >
> > 1.optimize (using the optimization package "optimize.m") and after that
> > 2. compile pieces of code like
> >
> > Module[{t}, t = x; Do[t = (t + x/t)/2, {n}]; t]
Note that this code is much clearer as
Nest[Function[t, (t + x/t)/2], x, n]
And, of course, NewtonIteration is built-in (FindRoot).
> > Applying the two-step approach to the code above with a given n (=15)
> > there is a speed up ratio of 8500 compared with the original exprssion.
> >
> > Is it possible to apply this procedure to general expressions?
> >
> > Thanks in advance
> > Frank
--
Paul Abbott Phone: +61 8 6488 2734
School of Physics, M013 Fax: +61 8 6488 1014
The University of Western Australia (CRICOS Provider No 00126G)
35 Stirling Highway
Crawley WA 6009 mailto:paul at physics.uwa.edu.au
AUSTRALIA http://physics.uwa.edu.au/~paul