[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