1#!/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 69