Re: How to compile this module?
- To: mathgroup at smc.vnet.net
- Subject: [mg80964] Re: How to compile this module?
- From: Szabolcs <szhorvat at gmail.com>
- Date: Thu, 6 Sep 2007 05:33:05 -0400 (EDT)
- Organization: University of Bergen
- References: <fbliht$or0$1@smc.vnet.net> <46DE8DAA.3080601@gmail.com>
Szabolcs wrote:
> This function works:
>
> myC = Compile[{{lst,_Integer,1},{W,_Integer}},
> Module[{i,j=1,len=Length@lst,ols={}},
> For[i=1,i<=len,i++,
> While[
> lst[[j]]-lst[[i]]<=W && j<len,
> j++
> ];
> AppendTo[ols,j-i]
> ];
> ols
> ]]
Oops ... it works but it's damn slow.
Here's a better version:
myM2[lst_,W_]:=
Module[
{i,j=1,len=Length@lst},
Table[
While[lst[[j]]-lst[[i]] <= W && j < len, j++]; j-i,
{i,1,len}
]
]
myC2:=
Compile[{{lst,_Integer,1},{W,_Integer}},
Module[
{i,j=1,len=Length@lst},
Table[
While[lst[[j]]-lst[[i]] <= W && j < len, j++]; j-i,
{i,1,len}
]
]
]
Szabolcs