[Python-checkins] r66327 - sandbox/trunk/dbm_sqlite/Lib/dbm/sqlite.py
skip.montanaro
python-checkins at python.org
Tue Sep 9 04:47:54 CEST 2008
Author: skip.montanaro
Date: Tue Sep 9 04:47:54 2008
New Revision: 66327
Log:
Document performance issues.
Modified:
sandbox/trunk/dbm_sqlite/Lib/dbm/sqlite.py
Modified: sandbox/trunk/dbm_sqlite/Lib/dbm/sqlite.py
==============================================================================
--- sandbox/trunk/dbm_sqlite/Lib/dbm/sqlite.py (original)
+++ sandbox/trunk/dbm_sqlite/Lib/dbm/sqlite.py Tue Sep 9 04:47:54 2008
@@ -3,7 +3,57 @@
XXX TO DO:
-Everything.
+* Obvious speed problems:
+
+ - Read performance:
+
+ for m in dumb gnu ndbm sqlite ; do
+ echo $m
+ for n in 10 100 ; do
+ rm -f /tmp/trash.db*
+ python3.0 -m timeit -s 'import dbm.'$m' as db' \
+ -s 'f = db.open("/tmp/trash.db", "c")' \
+ -s 'f[b"1"] = b"a"' \
+ 'for i in range('$n'): x = f[b"1"]'
+ done
+ done
+ dumb
+ 1000 loops, best of 3: 989 usec per loop
+ 100 loops, best of 3: 9.93 msec per loop
+ gnu
+ 100000 loops, best of 3: 4.06 usec per loop
+ 10000 loops, best of 3: 36.6 usec per loop
+ ndbm
+ 100000 loops, best of 3: 3.54 usec per loop
+ 10000 loops, best of 3: 30.9 usec per loop
+ sqlite
+ 1000 loops, best of 3: 578 usec per loop
+ 100 loops, best of 3: 5.78 msec per loop
+
+ - Write performance:
+
+ for m in dumb gnu ndbm sqlite ; do
+ echo $m
+ for n in 10 100 ; do
+ rm -f /tmp/trash.db*
+ python3.0 -m timeit -s 'import dbm.'$m' as db' \
+ -s 'f = db.open("/tmp/trash.db", "c")' \
+ 'for i in range('$n'): f[bytes(str(i), "ascii")] = bytes(str(i), "ascii")'
+ done
+ done
+ dumb
+ 100 loops, best of 3: 4.06 msec per loop
+ 10 loops, best of 3: 43 msec per loop
+ gnu
+ 1000 loops, best of 3: 296 usec per loop
+ 100 loops, best of 3: 3.03 msec per loop
+ ndbm
+ 10000 loops, best of 3: 28.4 usec per loop
+ 1000 loops, best of 3: 305 usec per loop
+ sqlite
+ 10 loops, best of 3: 23.5 msec per loop
+ 10 loops, best of 3: 264 msec per loop
+
"""
import sqlite3
More information about the Python-checkins
mailing list