Question about Compiling, external functions, and For loops
- To: mathgroup at smc.vnet.net
- Subject: [mg56500] Question about Compiling, external functions, and For loops
- From: Ravi Balasubramanian <ravib at andrew.cmu.edu>
- Date: Tue, 26 Apr 2005 21:53:38 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Hi Math Group-ers,
[Contact the author to get the notebook attachment mentioned below
- moderator]
I think I have a pretty standard problem, but I was unable to find a
solution either in the help pages or in Mathgroup; apologies if the
answer is already online; I will really appreciate it if you can direct
me to it.
My code is attached in an nb file. I have a function findCost2, created
as a module, that must be called many times in a for-loop. Since I have
to call it so many times, I want to compile the whole for-loop. Here
are the specifics:
findCost2 is an interpolation function: given a two-d matrix of costs,
and a new state, it finds the cost of the new state by interpolating the
nearby values. I pass findCost2 the matrix of costs, the list of states
(given in two 1-d arrays, viz., thetaTable and thetapTable), and the new
state; it returns a cost value.
compiledLoop is a compiled module that calls findCost2 many times, while
uncompiledLoop is an uncompiled module that calls findCost2 many times.
Here is a comparison of the two speeds.
compiledLoop Time: 134.734 Second
uncompiledLoop Time: 136. Second
I notice that there is not much gain in compiling, probably because of
the external calls to findCost2; but I would really prefer not include
the code in findCost2 into the loop. This seems to be a standard
question in the Mathgroup archives; is there a solution? Any
suggestions? Help greatly appreciated.
Ravi Balasubramanian
The Robotics Institute,
Carnegie Mellon University