Re: Compiled function slowdown
- To: mathgroup at smc.vnet.net
- Subject: [mg86723] Re: [mg86682] Compiled function slowdown
- From: DrMajorBob <drmajorbob at bigfoot.com>
- Date: Wed, 19 Mar 2008 05:26:35 -0500 (EST)
- References: <9949215.1205837642926.JavaMail.root@m08>
- Reply-to: drmajorbob at longhorns.com
Send the e1, e2, and fComp functions, and I'll be curious to untangle this
mess. Without them, it's incomprehensible.
Bobby
On Tue, 18 Mar 2008 04:50:04 -0500, mm1q <epv001 at lvc.edu> wrote:
> Hello,
>
> In a program I'm currently working on, I need to loop through a function
> ~100,000 times. I thought I'd try compiling it to save on time.
> However, it takes more than 10 times longer to run than the uncompiled
> (module) version. Are there any general guidelines as to when a
> compiled function will be slower than its uncompiled counterpart in
> Mathematica (such as with the use of many conditional statements)? I've
> included my function below (sorry if it's a mess; e1, e2 and fComp are
> very simple compiled functions), though a general response to the above
> question would be just fine. Thanks!
>
> generator = Compile[{stepTotAccum_Real, {dxTable, _Real, 1},
> pTile_Real, area_Real},
> Do[
> While[True,
> u = Random[];
> If[ u < stepTotAccum,
> stats = 1 + 4*Floor[u/pTile];
> cand = (u - dxTable[[stats + 2]])/dxTable[[stats + 1]]+
> dxTable[[stats]];
> If[Random[]*dxTable[[stats + 3]] < fComp[cand],
> Return[cand * (-1)^Random[Integer]]
> ];
> ,
> cand = e1[u];
> If[e2[Random[], cand, area] < fComp[cand],
> Return[cand * (-1)^Random[Integer]]
> ];
> ];
> ];
> ]
> ];
>
>
--
DrMajorBob at longhorns.com