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