[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