Re: Increase in efficiency with Module
- To: mathgroup at smc.vnet.net
- Subject: [mg40074] Re: Increase in efficiency with Module
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Tue, 18 Mar 2003 05:50:59 -0500 (EST)
- Organization: Universitaet Leipzig
- References: <b5424l$mfr$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
- Sender: owner-wri-mathgroup at wolfram.com
Hi,
with out the Module[] you are refering to i and j as external function
calls
and this slow down the compiled evaluation.
Regards
Jens
"Aaron E. Hirsh" wrote:
>
> I would be grateful if someone could explain the difference in
> efficiency between the following two simple programs. ry is a list of
> length n. For n = 1000, the program using Module takes 1 second on my
> laptop, whereas the program without Module takes 75 seconds.
>
> ftauc = Compile[{{ry, _Real, 1}, {n, _Real, 0}},
>
> Module[{i,
> j, a},
>
> i = 1;
> a = 0;
>
> Do[
>
>
> j = i + 1;
>
> Do[
> If[ry[[i]] < ry[[j]], a++,
> If[ry[[i]] > ry[[j]], a--]];
> j++, {n - i}];
>
>
> i++, {n - 1}]; a
> ]]
>
> ftauc2 = Compile[{{ry, _Real, 1}, {n, _Real, 0}},
>
>
>
>
> i = 1;
> a = 0;
>
> Do[
>
> j = i + 1;
>
>
> Do[
> If[ry[[i]] < ry[[j]], a++, If[ry[[i]] > ry[[j]], a--]];
>
> j++, {n - i}];
>
> i++, {n - 1}]; a
>
> ]
>
> thank you,
> --
>
> Aaron E. Hirsh
> Center for Computational Genetics and Biological Modeling
> Department of Biological Sciences
> Stanford University
> tel. (650) 723-4952
> fax. (650) 725-0180