[Python-checkins] r45906 - sandbox/trunk/sio/bench_cat.py sandbox/trunk/sio/bench_io.py

guido.van.rossum python-checkins at python.org
Fri May 5 06:49:34 CEST 2006


Author: guido.van.rossum
Date: Fri May  5 06:49:34 2006
New Revision: 45906

Added:
   sandbox/trunk/sio/bench_cat.py   (contents, props changed)
   sandbox/trunk/sio/bench_io.py   (contents, props changed)
Log:
Add some simple benchmarks.


Added: sandbox/trunk/sio/bench_cat.py
==============================================================================
--- (empty file)
+++ sandbox/trunk/sio/bench_cat.py	Fri May  5 06:49:34 2006
@@ -0,0 +1,20 @@
+import timeit
+
+for size in [10, 20, 50, 100, 200, 500, 1000]:
+    print "------ size = %d ------" % size
+    strings = []
+    byteses = []
+    for i in range(100000):
+        n = size
+        s = "x"*n
+        b = bytes(s)
+        strings.append(s)
+        byteses.append(b)
+
+    timer = timeit.Timer("bbb = bytes()\nfor b in byteses: bbb += b",
+                         "from __main__ import strings, byteses")
+    print "byteses %.3f" % min(timer.repeat(3, 10))
+
+    timer = timeit.Timer("sss = ''.join(strings)",
+                         "from __main__ import strings, byteses")
+    print "strings %.3f" % min(timer.repeat(3, 10))

Added: sandbox/trunk/sio/bench_io.py
==============================================================================
--- (empty file)
+++ sandbox/trunk/sio/bench_io.py	Fri May  5 06:49:34 2006
@@ -0,0 +1,74 @@
+"""A silly I/O benchmark."""
+
+import io
+import os
+import time
+
+TFN = "@bench" # Test filename
+N = 64*1024*1024 # Number of bytes to read/write
+
+def writer():
+    buffer = bytes("X")*(8*1024)
+    bufsize = len(buffer)
+    file = io.open(TFN, "wb", bufsize=0)
+    try:
+        size = 0
+        while size < N:
+            file.write(buffer)
+            size += bufsize
+    finally:
+        file.close()
+    assert os.path.getsize(TFN) == N
+
+def oldwriter():
+    buffer = "X"*(8*1024)
+    bufsize = len(buffer)
+    file = open(TFN, "wb", bufsize)
+    try:
+        size = 0
+        while size < N:
+            file.write(buffer)
+            size += bufsize
+    finally:
+        file.close()
+    assert os.path.getsize(TFN) == N
+
+def reader():
+    buffer = bytes()
+    bufsize = 32*1024
+    file = io.open(TFN, "rb", 32*1024)
+    try:
+        while len(buffer) < N:
+            buffer += file.read(bufsize)
+    finally:
+        file.close()
+    assert len(buffer) == os.path.getsize(TFN) == N
+
+def oldreader():
+    bufsize = 32*1024
+    f = open(TFN, "rb", 8*1024)
+    try:
+        buffer = ""
+        while len(buffer) < N:
+            buffer += f.read(bufsize)
+    finally:
+        f.close()
+    assert len(buffer) == os.path.getsize(TFN) == N
+
+def timeit(func):
+    t0, c0 = time.time(), time.clock()
+    func()
+    t1, c1 = time.time(), time.clock()
+    print "%s: %6.3f time, %6.3f clock" % (func.__name__, t1-t0, c1-c0)
+
+def main():
+    for i in range(1):
+        timeit(writer)
+        timeit(reader)
+        os.remove(TFN)
+        timeit(oldwriter)
+        timeit(oldreader)
+        os.remove(TFN)
+
+if __name__ == "__main__":
+    main()


More information about the Python-checkins mailing list