blob: ee2ceac660ec55e4287ae0dce4e3bfa89fe027b8 [file] [log] [blame]
drhf10b1f72015-11-09 12:44:19 +00001#!/bin/bash
2#
3# This is a template for a script used for day-to-day size and
4# performance monitoring of SQLite. Typical usage:
5#
6# sh run-speed-test.sh trunk # Baseline measurement of trunk
7# sh run-speed-test.sh x1 # Measure some experimental change
8# fossil test-diff --tk cout-trunk.txt cout-x1.txt # View chanages
9#
10# There are multiple output files, all with a base name given by
11# the first argument:
12#
13# summary-$BASE.txt # Copy of standard output
14# cout-$BASE.txt # cachegrind output
15# explain-$BASE.txt # EXPLAIN listings
16#
17if test "$1" = ""
18then
19 echo "Usage: $0 OUTPUTFILE [OPTIONS]"
20 exit
21fi
22NAME=$1
23shift
24CC_OPTS="-DSQLITE_ENABLE_RTREE"
25SPEEDTEST_OPTS="--shrink-memory --reprepare"
26SIZE=5
27while test "$1" != ""; do
28 case $1 in
29 --reprepare)
30 SPEEDTEST_OPTS="$SPEEDTEST_OPTS $1"
31 ;;
32 --autovacuum)
33 SPEEDTEST_OPTS="$SPEEDTEST_OPTS $1"
34 ;;
35 --utf16be)
36 SPEEDTEST_OPTS="$SPEEDTEST_OPTS $1"
37 ;;
38 --without-rowid)
39 SPEEDTEST_OPTS="$SPEEDTEST_OPTS $1"
40 ;;
41 --size)
42 shift; SIZE=$1
43 ;;
44 *)
45 CC_OPTS="$CC_OPTS $1"
46 ;;
47 esac
48 shift
49done
50SPEEDTEST_OPTS="$SPEEDTEST_OPTS --size $SIZE"
51echo "NAME = $NAME" | tee summary-$NAME.txt
52echo "SPEEDTEST_OPTS = $SPEEDTEST_OPTS" | tee -a summary-$NAME.txt
53echo "CC_OPTS = $CC_OPTS" | tee -a summary-$NAME.txt
54rm -f cachegrind.out.* speedtest1 speedtest1.db sqlite3.o
55gcc -g -Os -Wall -I. $CC_OPTS -c sqlite3.c
56size sqlite3.o | tee -a summary-$NAME.txt
57gcc -g -Os -Wall -I. $CC_OPTS \
58 -DSQLITE_ENABLE_EXPLAIN_COMMENTS \
59 ./shell.c ./sqlite3.c -o sqlite3 -ldl -lpthread
60SRC=./speedtest1.c
61gcc -g -Os -Wall -I. $CC_OPTS $SRC ./sqlite3.o -o speedtest1 -ldl -lpthread
62ls -l speedtest1 | tee -a summary-$NAME.txt
63valgrind --tool=cachegrind ./speedtest1 speedtest1.db \
64 $SPEEDTEST_OPTS 2>&1 | tee -a summary-$NAME.txt
65size sqlite3.o | tee -a summary-$NAME.txt
66wc sqlite3.c
67cg_anno.tcl cachegrind.out.* >cout-$NAME.txt
68./speedtest1 --explain $SPEEDTEST_OPTS | ./sqlite3 >explain-$NAME.txt