A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2001-July/015840.html below:

[Python-Dev] Silly little benchmark

[Python-Dev] Silly little benchmarkTim Peters tim@digicool.com
Tue, 10 Jul 2001 17:26:13 -0400
Here are results on Win2K.  In part it just confirms that
xrange(large_number) is a poor way to drive benchmarks (the overhead of
creating and destroying gagilliblobs of unused integers is no help; OTOH,
2.0 certainly appears to be speedier at creating and destroying gagilliblobs
of useless integers!  a common cause for slowdowns of that nature is
ill-considered "special case" optimizations that turn out to cost more than
they save, although I have no particular reason to suspect that here).

Note that Windows Python has an excellent clock() function (it's real time,
not user time, and has better than microsecond resolution).

File skip.py:

N = 100000
TRIPS = 3

if 0:
    indices = xrange(N)   # common but ill-advised
else:
    indices = [None] * N  # better

def t1():
    for i in indices: pass

def t2():
    for i in indices: x = 1

def t3():
    for i in indices: x = ``1`+`2``


def timeit(f):
    from time import clock
    start = clock()
    f()
    finish = clock()
    return finish - start

for f, tag in (t1, "pass"), (t2, "x=1"), (t3, "x=``1`+`2``"):
    print "%-12s" % tag,
    # Warm up.
    f(); f(); f()
    for i in range(TRIPS):
        elapsed = timeit(f)
        print "%6.3f" % elapsed,
    print

"""
Results:

With

    indices = xrange(N)

C:\Code>\Python20\python.exe skip.py
pass          0.038  0.038  0.039
x=1           0.049  0.049  0.049
x=``1`+`2``   0.421  0.420  0.421

C:\Code>\Python21\python.exe skip.py
pass          0.042  0.042  0.042
x=1           0.053  0.053  0.053
x=``1`+`2``   0.456  0.456  0.455

C:\Code>python\dist\src\PCbuild\python skip.py # CVS
pass          0.040  0.039  0.039
x=1           0.050  0.051  0.050
x=``1`+`2``   0.449  0.452  0.452


With

    indices = [None] * N

instead:

C:\Code>\Python20\python.exe skip.py
pass          0.035  0.034  0.034
x=1           0.046  0.046  0.046
x=``1`+`2``   0.414  0.413  0.413

C:\Code>\Python21\python.exe skip.py
pass          0.037  0.037  0.037
x=1           0.048  0.048  0.048
x=``1`+`2``   0.451  0.448  0.453

C:\Code>python\dist\src\PCbuild\python skip.py # CVS
pass          0.031  0.030  0.031
x=1           0.041  0.042  0.041
x=``1`+`2``   0.438  0.447  0.444
"""




RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4