[Python-checkins] r68298 - in sandbox/trunk/dbm_sqlite/Lib/dbm: sqlite.py sqliteperf.out sqliteperf.sh

skip.montanaro python-checkins at python.org
Sun Jan 4 13:44:20 CET 2009


Author: skip.montanaro
Date: Sun Jan  4 13:44:20 2009
New Revision: 68298

Log:
pull tests out

Added:
   sandbox/trunk/dbm_sqlite/Lib/dbm/sqliteperf.out   (contents, props changed)
   sandbox/trunk/dbm_sqlite/Lib/dbm/sqliteperf.sh   (contents, props changed)
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	Sun Jan  4 13:44:20 2009
@@ -4,189 +4,8 @@
 XXX TO DO:
 
 * Obvious speed problems (all tests performed on 2.2GHz MacBook Pro running
-  OSX 10.5.4 with SQLite 3.6.2):
-
-PYTHON=python3.0
-
-$PYTHON -c 'import sqlite3
-print("module version:", sqlite3.version_info)
-print("sqlite version:", sqlite3.sqlite_version_info)
-'
-
-echo
-echo 'read from file'
-for m in dumb gnu ndbm sqlite ; do
-    for n in 10 100 1000 ; do
-        rm -f /tmp/trash.db*
-        echo -n "$m $n: "
-        $PYTHON -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
-
-echo
-echo 'read from :memory:'
-for m in sqlite ; do
-    for n in 10 100 1000 ; do
-        echo -n "$m $n: "
-        $PYTHON -m timeit -s 'import dbm.'$m' as db' \
-                          -s 'f = db.open(":memory:", "c")' \
-                          -s 'f[b"1"] = b"a"' \
-                          'for i in range('$n'): x = f[b"1"]'
-    done
-done
-
-echo
-echo 'write to file'
-for m in dumb gnu ndbm sqlite ; do
-    for n in 10 100 1000 ; do
-        rm -f /tmp/trash.db*
-        echo -n "$m $n: "
-        $PYTHON -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
-
-echo
-echo 'write to :memory:'
-for m in sqlite ; do
-    for n in 10 100 1000 ; do
-        echo -n "$m $n: "
-        $PYTHON -m timeit -s 'import dbm.'$m' as db' \
-                          -s 'f = db.open(":memory:", "c")' \
-                          'for i in range('$n'): f[bytes(str(i), "ascii")] = bytes(str(i), "ascii")'
-    done
-done
-
-echo
-echo 'keys from file'
-for m in dumb gnu ndbm sqlite ; do
-    for n in 10 100 1000 ; do
-        rm -f /tmp/trash.db*
-        echo -n "$m $n: "
-        $PYTHON -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.keys()'
-    done
-done
-
-echo
-echo 'keys from :memory:'
-for m in sqlite ; do
-    for n in 10 100 1000 ; do
-        echo -n "$m $n: "
-        $PYTHON -m timeit -s 'import dbm.'$m' as db' \
-                          -s 'f = db.open(":memory:", "c")' \
-                          -s 'f[b"1"] = b"a"' \
-                          'for i in range('$n'): x = f.keys()'
-    done
-done
-
-echo
-echo 'iterkeys from file'
-for m in dumb sqlite ; do
-    for n in 10 100 1000 ; do
-        rm -f /tmp/trash.db*
-        echo -n "$m $n: "
-        $PYTHON -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.iterkeys()'
-    done
-done
-
-echo
-echo 'iterkeys from :memory:'
-for m in sqlite ; do
-    for n in 10 100 1000 ; do
-        echo -n "$m $n: "
-        $PYTHON -m timeit -s 'import dbm.'$m' as db' \
-                          -s 'f = db.open(":memory:", "c")' \
-                          -s 'f[b"1"] = b"a"' \
-                          'for i in range('$n'): x = f.iterkeys()'
-    done
-done
-
-As of 2009-01-04 I get this output on a 2.2GHz MacBook Pro:
-
-module version: (2, 4, 1)
-sqlite version: (3, 6, 2)
-
-read from file
-dumb 10: 1000 loops, best of 3: 1.04 msec per loop
-dumb 100: 100 loops, best of 3: 10.4 msec per loop
-dumb 1000: 10 loops, best of 3: 104 msec per loop
-gnu 10: 100000 loops, best of 3: 4.41 usec per loop
-gnu 100: 10000 loops, best of 3: 38.5 usec per loop
-gnu 1000: 1000 loops, best of 3: 395 usec per loop
-ndbm 10: 100000 loops, best of 3: 3.64 usec per loop
-ndbm 100: 10000 loops, best of 3: 31.1 usec per loop
-ndbm 1000: 1000 loops, best of 3: 320 usec per loop
-sqlite 10: 1000 loops, best of 3: 258 usec per loop
-sqlite 100: 100 loops, best of 3: 2.57 msec per loop
-sqlite 1000: 10 loops, best of 3: 25.4 msec per loop
-
-read from :memory:
-sqlite 10: 1000 loops, best of 3: 233 usec per loop
-sqlite 100: 100 loops, best of 3: 2.32 msec per loop
-sqlite 1000: 10 loops, best of 3: 23.2 msec per loop
-
-write to file
-dumb 10: 100 loops, best of 3: 3.89 msec per loop
-dumb 100: 10 loops, best of 3: 40.9 msec per loop
-dumb 1000: 10 loops, best of 3: 415 msec per loop
-gnu 10: 1000 loops, best of 3: 306 usec per loop
-gnu 100: 100 loops, best of 3: 2.96 msec per loop
-gnu 1000: 10 loops, best of 3: 30.1 msec per loop
-ndbm 10: 10000 loops, best of 3: 27 usec per loop
-ndbm 100: 1000 loops, best of 3: 283 usec per loop
-ndbm 1000: 100 loops, best of 3: 6.08 msec per loop
-sqlite 10: 1000 loops, best of 3: 750 usec per loop
-sqlite 100: 100 loops, best of 3: 8.19 msec per loop
-sqlite 1000: 10 loops, best of 3: 94.1 msec per loop
-
-write to :memory:
-sqlite 10: 1000 loops, best of 3: 293 usec per loop
-sqlite 100: 100 loops, best of 3: 3.25 msec per loop
-sqlite 1000: 10 loops, best of 3: 34.9 msec per loop
-
-keys from file
-dumb 10: 100000 loops, best of 3: 14.6 usec per loop
-dumb 100: 10000 loops, best of 3: 141 usec per loop
-dumb 1000: 1000 loops, best of 3: 1.43 msec per loop
-gnu 10: 10000 loops, best of 3: 35.3 usec per loop
-gnu 100: 1000 loops, best of 3: 354 usec per loop
-gnu 1000: 100 loops, best of 3: 3.56 msec per loop
-ndbm 10: 100000 loops, best of 3: 5.78 usec per loop
-ndbm 100: 10000 loops, best of 3: 53.1 usec per loop
-ndbm 1000: 1000 loops, best of 3: 532 usec per loop
-sqlite 10: 10000 loops, best of 3: 183 usec per loop
-sqlite 100: 1000 loops, best of 3: 1.79 msec per loop
-sqlite 1000: 100 loops, best of 3: 18 msec per loop
-
-keys from :memory:
-sqlite 10: 10000 loops, best of 3: 164 usec per loop
-sqlite 100: 1000 loops, best of 3: 1.64 msec per loop
-sqlite 1000: 100 loops, best of 3: 16.4 msec per loop
-
-iterkeys from file
-dumb 10: 100000 loops, best of 3: 9.87 usec per loop
-dumb 100: 10000 loops, best of 3: 93.3 usec per loop
-dumb 1000: 1000 loops, best of 3: 943 usec per loop
-sqlite 10: 1000 loops, best of 3: 285 usec per loop
-sqlite 100: 100 loops, best of 3: 2.91 msec per loop
-sqlite 1000: 10 loops, best of 3: 29.1 msec per loop
-
-iterkeys from :memory:
-sqlite 10: 1000 loops, best of 3: 265 usec per loop
-sqlite 100: 100 loops, best of 3: 2.63 msec per loop
-sqlite 1000: 10 loops, best of 3: 26.5 msec per loop
-
-Note the poor performance compared to dbm.dumb while reading keys.
+  OSX 10.5.4 with SQLite 3.6.2).  See sqliteperf.sh and sqliteperf.out.
+  Note the poor performance compared to dbm.dumb while reading keys.
 """
 
 import sqlite3

Added: sandbox/trunk/dbm_sqlite/Lib/dbm/sqliteperf.out
==============================================================================
--- (empty file)
+++ sandbox/trunk/dbm_sqlite/Lib/dbm/sqliteperf.out	Sun Jan  4 13:44:20 2009
@@ -0,0 +1,74 @@
+As of 2009-01-04 I get this output on a 2.2GHz MacBook Pro:
+
+module version: (2, 4, 1)
+sqlite version: (3, 6, 2)
+
+read from file
+dumb 10: 1000 loops, best of 3: 1.04 msec per loop
+dumb 100: 100 loops, best of 3: 10.4 msec per loop
+dumb 1000: 10 loops, best of 3: 104 msec per loop
+gnu 10: 100000 loops, best of 3: 4.41 usec per loop
+gnu 100: 10000 loops, best of 3: 38.5 usec per loop
+gnu 1000: 1000 loops, best of 3: 395 usec per loop
+ndbm 10: 100000 loops, best of 3: 3.64 usec per loop
+ndbm 100: 10000 loops, best of 3: 31.1 usec per loop
+ndbm 1000: 1000 loops, best of 3: 320 usec per loop
+sqlite 10: 1000 loops, best of 3: 258 usec per loop
+sqlite 100: 100 loops, best of 3: 2.57 msec per loop
+sqlite 1000: 10 loops, best of 3: 25.4 msec per loop
+
+read from :memory:
+sqlite 10: 1000 loops, best of 3: 233 usec per loop
+sqlite 100: 100 loops, best of 3: 2.32 msec per loop
+sqlite 1000: 10 loops, best of 3: 23.2 msec per loop
+
+write to file
+dumb 10: 100 loops, best of 3: 3.89 msec per loop
+dumb 100: 10 loops, best of 3: 40.9 msec per loop
+dumb 1000: 10 loops, best of 3: 415 msec per loop
+gnu 10: 1000 loops, best of 3: 306 usec per loop
+gnu 100: 100 loops, best of 3: 2.96 msec per loop
+gnu 1000: 10 loops, best of 3: 30.1 msec per loop
+ndbm 10: 10000 loops, best of 3: 27 usec per loop
+ndbm 100: 1000 loops, best of 3: 283 usec per loop
+ndbm 1000: 100 loops, best of 3: 6.08 msec per loop
+sqlite 10: 1000 loops, best of 3: 750 usec per loop
+sqlite 100: 100 loops, best of 3: 8.19 msec per loop
+sqlite 1000: 10 loops, best of 3: 94.1 msec per loop
+
+write to :memory:
+sqlite 10: 1000 loops, best of 3: 293 usec per loop
+sqlite 100: 100 loops, best of 3: 3.25 msec per loop
+sqlite 1000: 10 loops, best of 3: 34.9 msec per loop
+
+keys from file
+dumb 10: 100000 loops, best of 3: 14.6 usec per loop
+dumb 100: 10000 loops, best of 3: 141 usec per loop
+dumb 1000: 1000 loops, best of 3: 1.43 msec per loop
+gnu 10: 10000 loops, best of 3: 35.3 usec per loop
+gnu 100: 1000 loops, best of 3: 354 usec per loop
+gnu 1000: 100 loops, best of 3: 3.56 msec per loop
+ndbm 10: 100000 loops, best of 3: 5.78 usec per loop
+ndbm 100: 10000 loops, best of 3: 53.1 usec per loop
+ndbm 1000: 1000 loops, best of 3: 532 usec per loop
+sqlite 10: 10000 loops, best of 3: 183 usec per loop
+sqlite 100: 1000 loops, best of 3: 1.79 msec per loop
+sqlite 1000: 100 loops, best of 3: 18 msec per loop
+
+keys from :memory:
+sqlite 10: 10000 loops, best of 3: 164 usec per loop
+sqlite 100: 1000 loops, best of 3: 1.64 msec per loop
+sqlite 1000: 100 loops, best of 3: 16.4 msec per loop
+
+iterkeys from file
+dumb 10: 100000 loops, best of 3: 9.87 usec per loop
+dumb 100: 10000 loops, best of 3: 93.3 usec per loop
+dumb 1000: 1000 loops, best of 3: 943 usec per loop
+sqlite 10: 1000 loops, best of 3: 285 usec per loop
+sqlite 100: 100 loops, best of 3: 2.91 msec per loop
+sqlite 1000: 10 loops, best of 3: 29.1 msec per loop
+
+iterkeys from :memory:
+sqlite 10: 1000 loops, best of 3: 265 usec per loop
+sqlite 100: 100 loops, best of 3: 2.63 msec per loop
+sqlite 1000: 10 loops, best of 3: 26.5 msec per loop

Added: sandbox/trunk/dbm_sqlite/Lib/dbm/sqliteperf.sh
==============================================================================
--- (empty file)
+++ sandbox/trunk/dbm_sqlite/Lib/dbm/sqliteperf.sh	Sun Jan  4 13:44:20 2009
@@ -0,0 +1,106 @@
+#!/bin/bash
+
+PYTHON=${PYTHON:-python3.0}
+
+$PYTHON -c 'import sqlite3
+print("module version:", sqlite3.version_info)
+print("sqlite version:", sqlite3.sqlite_version_info)
+'
+
+echo
+echo 'read from file'
+for m in dumb gnu ndbm sqlite ; do
+    for n in 10 100 1000 ; do
+        rm -f /tmp/trash.db*
+        echo -n "$m $n: "
+        $PYTHON -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
+
+echo
+echo 'read from :memory:'
+for m in sqlite ; do
+    for n in 10 100 1000 ; do
+        echo -n "$m $n: "
+        $PYTHON -m timeit -s 'import dbm.'$m' as db' \
+                          -s 'f = db.open(":memory:", "c")' \
+                          -s 'f[b"1"] = b"a"' \
+                          'for i in range('$n'): x = f[b"1"]'
+    done
+done
+
+echo
+echo 'write to file'
+for m in dumb gnu ndbm sqlite ; do
+    for n in 10 100 1000 ; do
+        rm -f /tmp/trash.db*
+        echo -n "$m $n: "
+        $PYTHON -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
+
+echo
+echo 'write to :memory:'
+for m in sqlite ; do
+    for n in 10 100 1000 ; do
+        echo -n "$m $n: "
+        $PYTHON -m timeit -s 'import dbm.'$m' as db' \
+                          -s 'f = db.open(":memory:", "c")' \
+                          'for i in range('$n'): f[bytes(str(i), "ascii")] = bytes(str(i), "ascii")'
+    done
+done
+
+echo
+echo 'keys from file'
+for m in dumb gnu ndbm sqlite ; do
+    for n in 10 100 1000 ; do
+        rm -f /tmp/trash.db*
+        echo -n "$m $n: "
+        $PYTHON -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.keys()'
+    done
+done
+
+echo
+echo 'keys from :memory:'
+for m in sqlite ; do
+    for n in 10 100 1000 ; do
+        echo -n "$m $n: "
+        $PYTHON -m timeit -s 'import dbm.'$m' as db' \
+                          -s 'f = db.open(":memory:", "c")' \
+                          -s 'f[b"1"] = b"a"' \
+                          'for i in range('$n'): x = f.keys()'
+    done
+done
+
+echo
+echo 'iterkeys from file'
+for m in dumb sqlite ; do
+    for n in 10 100 1000 ; do
+        rm -f /tmp/trash.db*
+        echo -n "$m $n: "
+        $PYTHON -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.iterkeys()'
+    done
+done
+
+echo
+echo 'iterkeys from :memory:'
+for m in sqlite ; do
+    for n in 10 100 1000 ; do
+        echo -n "$m $n: "
+        $PYTHON -m timeit -s 'import dbm.'$m' as db' \
+                          -s 'f = db.open(":memory:", "c")' \
+                          -s 'f[b"1"] = b"a"' \
+                          'for i in range('$n'): x = f.iterkeys()'
+    done
+done


More information about the Python-checkins mailing list