Some simple performace tests (long)

Justin Azoff justin.azoff at gmail.com
Sun Aug 7 01:57:39 CEST 2005


How much ram does your machine have?
the main point is "except when a very large range is used on a
memory-starved machine"


run
x = range(10 ** 6)
and look at the memory usage of python..

what happens when you run this program:

import time

def t(func, num):
    s = time.time()
    for x in func(num):
        pass
    return time.time() - s

def run(func, num):
    times = []
    for x in range(5):
        times.append(t(func,num))
    return min(times), max(times), sum(times)/5

def main():
    x = 10 ** 6
    while 1:
        print "trying", x
        for s, f in ('xr', xrange), (' r', range):
            print s + " %.3f %.3f %.3f" % run(f, x)
        x *= 1.5
        x = int(x)


if __name__ == "__main__":
    main()


I get (columns are mix/max/average):

trying 1000000
xr 0.110 0.115 0.111
 r 0.101 0.186 0.119
trying 1500000
xr 0.082 0.087 0.083
 r 0.152 0.158 0.154
trying 2250000
xr 0.124 0.138 0.128
 r 0.228 0.235 0.230
trying 3375000
xr 0.184 0.189 0.186
 r 0.344 0.352 0.346
trying 5062500
xr 0.276 0.284 0.279
 r 0.515 0.528 0.519
trying 7593750
xr 0.415 0.421 0.416
 r 0.774 0.795 0.779
trying 11390625
xr 0.623 0.634 0.626
 r 1.163 1.246 1.180
trying 17085937
xr 0.934 0.941 0.937
Killed

The "Killed" is from the linux OOM killing the python process.. notice
that the xrange for that number worked fine.




More information about the Python-list mailing list