Author stutzbach
Recipients belopolsky, draghuram, mark.dickinson, rhettinger, stutzbach
Date 2010-05-13.19:35:26
SpamBayes Score 0.0368231
Marked as misclassified No
Message-id <1273779329.13.0.0285901169814.issue8692@psf.upfronthosting.co.za>
In-reply-to
Content
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
History
Date User Action Args
2010-05-13 19:35:29stutzbachsetrecipients: + stutzbach, rhettinger, mark.dickinson, belopolsky, draghuram
2010-05-13 19:35:29stutzbachsetmessageid: <1273779329.13.0.0285901169814.issue8692@psf.upfronthosting.co.za>
2010-05-13 19:35:28stutzbachlinkissue8692 messages
2010-05-13 19:35:27stutzbachcreate