Confusing performance results for prime
Georgy Pruss
SEE_AT_THE_END at hotmail.com
Sat Oct 18 02:03:59 EDT 2003
I did the tests for the original Primes1 & 2 (only changed
range --> xrange and sqrt --> int(sqrt)) and your Primes3
Primes1: 9592 primes up to 100000 in 0.547 secs
Primes2: 9592 primes up to 100000 in 0.813 secs (+48.6%)
Primes3: 9592 primes up to 100000 in 0.578 secs (+5.7%)
Primes1: 49098 primes up to 600000 in 5.047 secs
Primes2: 49098 primes up to 600000 in 8.844 secs (+75.2%)
Primes3: 49098 primes up to 600000 in 5.922 secs (+17.3%)
Primes1: 107126 primes up to 1400000 in 14.469 secs
Primes2: 107126 primes up to 1400000 in 27.453 secs (+89.7%)
Primes3: 107126 primes up to 1400000 in 17.203 secs (+18.9%)
Georgy
E^mail: 'ZDAwMTEyMHQwMzMwQGhvdG1haWwuY29t\n'.decode('base64')
"Bengt Richter" <bokr at oz.net> wrote in message news:bmqfp9$1fu$0 at 216.39.172.122...
> <...>
> Sorry, I can't resist suggesting a slight speed improvement ;-)
>
> def Primes3(prime_range_top):
> primes = [2]
> for prime_candidate in xrange(3,prime_range_top,2):
> for p in primes:
> if prime_candidate%p==0: break
> if p*p>prime_candidate:
> primes.append(prime_candidate)
> break
> else:
> primes.append(prime_candidate)
> return primes
>
> And maybe running the bunch with
>
> if __name__ == "__main__":
> n=100000
> times = []
> for pfun in (Primes1, Primes2, Primes3):
> tb = time.time()
> l1 = pfun(n)
> dt = time.time() - tb
> times.append(dt)
> print '%s: %s primes up to %s in %5.3f secs' % (
> pfun.__name__, len(l1), n, dt)
> fastest = min(times)
> print '\nTimes relative to the fastest:'
> for i, pfun in enumerate((Primes1, Primes2, Primes3)):
> print '%s: %5.3f'%(pfun.__name__, times[i]/fastest)
>
> Which gave me (on older machine ;-)
>
> Primes1: 9592 primes up to 100000 in 2.984 secs
> Primes2: 9592 primes up to 100000 in 5.608 secs
> Primes3: 9592 primes up to 100000 in 2.444 secs
>
> Times relative to the fastest:
> Primes1: 1.221
> Primes2: 2.295
> Primes3: 1.000
>
> Regards,
> Bengt Richter
More information about the Python-list
mailing list