# Is it possible to speed up loop iteration in Sage?

I have a sage code that looks like this:

    uni = {}
end = (l[idx]^(e[idx] - 1)) * (l[idx] + 1) # where end in my case is about 2013265922 but can also be much larger
for count in range(0, end):
i = randint(1, 303325737249669131)
if i in uni:
uni[i] += 1
else:
uni[i] = 1


So basically, I want to create very large number of random integers in the given range, check whether the number was already in the dictionary, if yes increment its count, if not initialize it to 1. But, this takes such a long time that it doesn't finish in a reasonable time. Is there any way to speed up this kind of loops in Sage (or Python)?

edit retag close merge delete

Sort by ยป oldest newest most voted

Using Cython can dramatically improve performance by converting the code to C and compiling it. For example,

%%cython
import random
def run(end):
uni = {}

for count in range(0, end):
i = random.randint(1, 303325737249669131)
if i in uni:
uni[i] += 1
else:
uni[i] = 1
return uni

more