Daniel Stutzbach <dan...@stutzbachenterprises.com> added the comment:

After experimenting with changing the order of the multiplications and not 
having much luck, I went back and looked for other differences in Alexander's 
Python functions that might cause the speed difference.  I believe 
partial_product2 is fast because it performs all of its operations in-place 
using a single list, whereas partial_product3 creates a new list during each 
iteration.  Here's a version of partial_product3 that operates in-place and is 
just as fast as partial_product2:

def partial_product3(j, i):
    a = [l << 1 | 1 for l in range(j, i + 1)]
    n = len(a)
    while 1:
        if n == 1:
            return a[0]
        half = n//2
        for k in range(0,half):
            a[k] = a[k*2] * a[k*2+1]
        if n & 1:
            a[half] = a[n-1]
        n = half

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue8692>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to