Hi, It seems to be range / xrange issue. range allocates all data in a moment when xrange acts like an iterator.
On 07/30/2013 01:01 PM, Maciej Fijalkowski wrote: > This sounds odd. My PyPy does not leak memory in this example. Can you > please double check? > > On Tue, Jul 30, 2013 at 2:43 AM, Nathan Hurst <n...@njhurst.com> wrote: >> I was playing with this simple function to compute uint/3. It does >> not (afaict) directly allocate any memory, but when run it rapidly >> consumes all memory (32GB): >> >> def divu3(n): >> q = (n >> 2) + (n >> 4) # q = n*0.0101 (approx). >> q = q + (q >> 4) # q = n*0.01010101. >> q = q + (q >> 8) # q = n*0.01010101. >> q = q + (q >> 16) # q = n*0.01010101. >> r = n - q*3 # 0 <= r <= 15. >> return q + (11*r >> 5) # Returning q + r/3. >> >> >> for i in range(2**31): >> assert(divu3(i) == i/3) >> >> >> Python 2.7.3 (daf1b0412bfbd0666c19d567e37b29e4a3be5734, Jul 12 2013, >> 19:10:57) >> [PyPy 2.1.0-beta1 with GCC 4.7.2] on linux2 >> >> is it being over eager to specialise? >> >> njh >> _______________________________________________ >> pypy-dev mailing list >> pypy-dev@python.org >> http://mail.python.org/mailman/listinfo/pypy-dev > _______________________________________________ > pypy-dev mailing list > pypy-dev@python.org > http://mail.python.org/mailman/listinfo/pypy-dev _______________________________________________ pypy-dev mailing list pypy-dev@python.org http://mail.python.org/mailman/listinfo/pypy-dev