summaryrefslogtreecommitdiffstats
path: root/tool/kvtest-speed.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tool/kvtest-speed.sh')
-rw-r--r--tool/kvtest-speed.sh35
1 files changed, 35 insertions, 0 deletions
diff --git a/tool/kvtest-speed.sh b/tool/kvtest-speed.sh
new file mode 100644
index 0000000..5f2c834
--- /dev/null
+++ b/tool/kvtest-speed.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+#
+# A script for running speed tests using kvtest.
+#
+# The test database must be set up first. Recommended
+# command-line:
+#
+# ./kvtest init kvtest.db --count 100K --size 12K --variance 5K
+
+if test "$1" = ""
+then
+ echo "Usage: $0 OUTPUTFILE [OPTIONS]"
+ exit
+fi
+NAME=$1
+shift
+OPTS="-DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_DIRECT_OVERFLOW_READ -DUSE_PREAD"
+KVARGS="--count 100K --stats"
+gcc -g -Os -I. $OPTS $* kvtest.c sqlite3.c -o kvtest
+
+# First run using SQL
+rm cachegrind.out.[1-9][0-9]*
+valgrind --tool=cachegrind ./kvtest run kvtest.db $KVARGS 2>&1 | tee summary-kvtest-$NAME.txt
+mv cachegrind.out.[1-9][0-9]* cachegrind.out.sql-$NAME
+cg_anno.tcl cachegrind.out.sql-$NAME >cout-kvtest-sql-$NAME.txt
+
+# Second run using the sqlite3_blob object
+valgrind --tool=cachegrind ./kvtest run kvtest.db $KVARGS --blob-api 2>&1 | tee -a summary-kvtest-$NAME.txt
+mv cachegrind.out.[1-9][0-9]* cachegrind.out.$NAME
+cg_anno.tcl cachegrind.out.$NAME >cout-kvtest-$NAME.txt
+
+# Diff the sqlite3_blob API analysis for non-trunk runs.
+if test "$NAME" != "trunk"; then
+ fossil test-diff --tk cout-kvtest-trunk.txt cout-kvtest-$NAME.txt &
+fi