On 02/10/2017 08:41, Peter Otten wrote:
Daniel Bastos wrote:
def make_sequence_non_recursive(N, x0 = 2, c = -1):
"What's wrong with this function? It's very slow."
last = x0
def sequence():
nonlocal last
next = last
last = last**2 + c
return next % N
return sequence
x.bit_length()
12534884
So at this point it alreay would take 1.5 MB to store the number in binary.
The actual format requires even a bit more memory:
import sys
sys.getsizeof(x)
1671344
So for every operation you have to touch a lot of memory -- and that takes
time.
If it recalculates 'last' once for each of those couple of dozen printed
lines, that I doubt accessing a few MB of memory is the issue. More
doing such a big calculation.
--
bartc
--
https://mail.python.org/mailman/listinfo/python-list