blob: 0e970ea0f6022ee17ee78982836d7955fdf54d25 [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
drhfbcd3132016-03-30 12:20:24 +000015# explain-$BASE.txt # EXPLAIN listings (only with --explain)
drhf10b1f72015-11-09 12:44:19 +000016#
17if test "$1" = ""
18then
19 echo "Usage: $0 OUTPUTFILE [OPTIONS]"
20 exit
21fi
22NAME=$1
23shift
drhfbcd3132016-03-30 12:20:24 +000024CC_OPTS="-DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_MEMSYS5"
25SPEEDTEST_OPTS="--shrink-memory --reprepare --heap 10000000 64"
drhf10b1f72015-11-09 12:44:19 +000026SIZE=5
drhfbcd3132016-03-30 12:20:24 +000027doExplain=0
drhf10b1f72015-11-09 12:44:19 +000028while test "$1" != ""; do
29 case $1 in
30 --reprepare)
31 SPEEDTEST_OPTS="$SPEEDTEST_OPTS $1"
32 ;;
33 --autovacuum)
34 SPEEDTEST_OPTS="$SPEEDTEST_OPTS $1"
35 ;;
36 --utf16be)
37 SPEEDTEST_OPTS="$SPEEDTEST_OPTS $1"
38 ;;
drhfbcd3132016-03-30 12:20:24 +000039 --stats)
40 SPEEDTEST_OPTS="$SPEEDTEST_OPTS $1"
41 ;;
drhf10b1f72015-11-09 12:44:19 +000042 --without-rowid)
43 SPEEDTEST_OPTS="$SPEEDTEST_OPTS $1"
44 ;;
drhfbcd3132016-03-30 12:20:24 +000045 --nomemstat)
46 SPEEDTEST_OPTS="$SPEEDTEST_OPTS $1"
47 ;;
48 --wal)
49 SPEEDTEST_OPTS="$SPEEDTEST_OPTS --journal wal"
50 ;;
drhf10b1f72015-11-09 12:44:19 +000051 --size)
52 shift; SIZE=$1
53 ;;
drhfbcd3132016-03-30 12:20:24 +000054 --explain)
55 doExplain=1
56 ;;
57 --heap)
58 CC_OPTS="$CC_OPTS -DSQLITE_ENABLE_MEMSYS5"
59 shift;
60 SPEEDTEST_OPTS="$SPEEDTEST_OPTS --heap $1 64"
61 ;;
drhf10b1f72015-11-09 12:44:19 +000062 *)
63 CC_OPTS="$CC_OPTS $1"
64 ;;
65 esac
66 shift
67done
68SPEEDTEST_OPTS="$SPEEDTEST_OPTS --size $SIZE"
69echo "NAME = $NAME" | tee summary-$NAME.txt
70echo "SPEEDTEST_OPTS = $SPEEDTEST_OPTS" | tee -a summary-$NAME.txt
71echo "CC_OPTS = $CC_OPTS" | tee -a summary-$NAME.txt
72rm -f cachegrind.out.* speedtest1 speedtest1.db sqlite3.o
73gcc -g -Os -Wall -I. $CC_OPTS -c sqlite3.c
74size sqlite3.o | tee -a summary-$NAME.txt
drhfbcd3132016-03-30 12:20:24 +000075if test $doExplain -eq 1; then
76 gcc -g -Os -Wall -I. $CC_OPTS \
77 -DSQLITE_ENABLE_EXPLAIN_COMMENTS \
78 ./shell.c ./sqlite3.c -o sqlite3 -ldl -lpthread
79fi
drhf10b1f72015-11-09 12:44:19 +000080SRC=./speedtest1.c
81gcc -g -Os -Wall -I. $CC_OPTS $SRC ./sqlite3.o -o speedtest1 -ldl -lpthread
82ls -l speedtest1 | tee -a summary-$NAME.txt
83valgrind --tool=cachegrind ./speedtest1 speedtest1.db \
84 $SPEEDTEST_OPTS 2>&1 | tee -a summary-$NAME.txt
85size sqlite3.o | tee -a summary-$NAME.txt
86wc sqlite3.c
87cg_anno.tcl cachegrind.out.* >cout-$NAME.txt
drhfbcd3132016-03-30 12:20:24 +000088if test $doExplain -eq 1; then
89 ./speedtest1 --explain $SPEEDTEST_OPTS | ./sqlite3 >explain-$NAME.txt
90fi