On 9/21/07, Gary Ruben <[EMAIL PROTECTED]> wrote:
>
> Gael Varoquaux wrote:
> > On Fri, Sep 21, 2007 at 02:58:43PM -0600, Charles R Harris wrote:
> >>    I found generators a good approach to this  sort of thing:
> >
> >>    for (i,j,k) in triplets(n) :
> >
> > That's what we where doing so far, but in the code itself. The result
> was
> > unbearably slow.
> > I think for our purposes we should build a precalculated table of these
> > nuplets, and then do array calculations on them.
>
> I'm not sure whether this helps, but I have found this generator-based
> recipe <http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/190465>
> very useful in the past. The comment "If you require the complete list
> of permutations, just use the built-in list() operator" may apply to
> your situation,



Not bad for the triplets, I would have thought the cost of recursion would
be greater. The use of lists slows it down a bit for bigger combinations.

In [50]: time for i in xuniqueCombinations(range(100),3) : pass
CPU times: user 0.56 s, sys: 0.02 s, total: 0.58 s
Wall time: 0.57

In [51]: time for i in xuniqueCombinations(range(20),10) : pass
CPU times: user 2.17 s, sys: 0.07 s, total: 2.23 s
Wall time: 2.23

In [52]: time for i in combination(20,10) : pass
CPU times: user 0.96 s, sys: 0.01 s, total: 0.97 s
Wall time: 0.97

Chuck
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to