IronPython runs this sieve function 20-30% faster than CPython
def primes2(n):
if n<2: return []
s=range(1,n,2) # [1,3,5....n | n-1]
s[0] = 2
len_s = len(s)
for i in xrange(1,int(sqrt(n)/2)+1):
m = s[i]
if m:
j=(m*m)/2
while j<len_s:
s[j]=0
j = j+m
return [i for i in s if i]
def timeit(N):
t1 = time.clock()
l1 = primes2(N)
tp1 = time.clock()- t1
return tp1
CPython 2.4
>>> [timeit(1000000) for i in 1,2,3]
[0.746761948795168, 0.76873792618893333, 0.78001002920763085]
>>>
IronPython 0.7.3
>>> [timeit(1000000) for i in 1,2,3]
[0.590843200683594, 0.550788879394531, 0.490707397460938]
>>>
Michael
_______________________________________________
users-ironpython.com mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com