[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