improve memory handling for values returned from pragmas
[sqlcipher.git] / tool / kvtest-speed.sh
blob5f2c8345bee5caf152649a6fa04cd128ea4cd9ff
1 #!/bin/bash
3 # A script for running speed tests using kvtest.
5 # The test database must be set up first. Recommended
6 # command-line:
8 # ./kvtest init kvtest.db --count 100K --size 12K --variance 5K
10 if test "$1" = ""
11 then
12 echo "Usage: $0 OUTPUTFILE [OPTIONS]"
13 exit
15 NAME=$1
16 shift
17 OPTS="-DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_DIRECT_OVERFLOW_READ -DUSE_PREAD"
18 KVARGS="--count 100K --stats"
19 gcc -g -Os -I. $OPTS $* kvtest.c sqlite3.c -o kvtest
21 # First run using SQL
22 rm cachegrind.out.[1-9][0-9]*
23 valgrind --tool=cachegrind ./kvtest run kvtest.db $KVARGS 2>&1 | tee summary-kvtest-$NAME.txt
24 mv cachegrind.out.[1-9][0-9]* cachegrind.out.sql-$NAME
25 cg_anno.tcl cachegrind.out.sql-$NAME >cout-kvtest-sql-$NAME.txt
27 # Second run using the sqlite3_blob object
28 valgrind --tool=cachegrind ./kvtest run kvtest.db $KVARGS --blob-api 2>&1 | tee -a summary-kvtest-$NAME.txt
29 mv cachegrind.out.[1-9][0-9]* cachegrind.out.$NAME
30 cg_anno.tcl cachegrind.out.$NAME >cout-kvtest-$NAME.txt
32 # Diff the sqlite3_blob API analysis for non-trunk runs.
33 if test "$NAME" != "trunk"; then
34 fossil test-diff --tk cout-kvtest-trunk.txt cout-kvtest-$NAME.txt &