2023-04-26 13:25:30 +00:00
#!/bin/bash
#
# This is a template for a script used for day-to-day size and
# performance monitoring of SQLite. Typical usage:
#
# sh speed-check.sh trunk # Baseline measurement of trunk
# sh speed-check.sh x1 # Measure some experimental change
# fossil xdiff --tk jout-trunk.txt jout-x1.txt # View chanages
#
# There are multiple output files, all with a base name given by
# the first argument:
#
# summary-$BASE.txt # Copy of standard output
# jout-$BASE.txt # cachegrind output
# explain-$BASE.txt # EXPLAIN listings (only with --explain)
#
if test " $1 " = ""
then
echo " Usage: $0 OUTPUTFILE [OPTIONS] "
exit
fi
NAME = $1
shift
#CC_OPTS="-DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_MEMSYS5"
CC_OPTS = "-DSQLITE_ENABLE_MEMSYS5"
CC = gcc
LEAN_OPTS = "-DSQLITE_THREADSAFE=0"
LEAN_OPTS = " $LEAN_OPTS -DSQLITE_DEFAULT_MEMSTATUS=0 "
LEAN_OPTS = " $LEAN_OPTS -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 "
LEAN_OPTS = " $LEAN_OPTS -DSQLITE_LIKE_DOESNT_MATCH_BLOBS "
LEAN_OPTS = " $LEAN_OPTS -DSQLITE_MAX_EXPR_DEPTH=0 "
LEAN_OPTS = " $LEAN_OPTS -DSQLITE_OMIT_DECLTYPE "
LEAN_OPTS = " $LEAN_OPTS -DSQLITE_OMIT_DEPRECATED "
LEAN_OPTS = " $LEAN_OPTS -DSQLITE_OMIT_PROGRESS_CALLBACK "
LEAN_OPTS = " $LEAN_OPTS -DSQLITE_OMIT_SHARED_CACHE "
LEAN_OPTS = " $LEAN_OPTS -DSQLITE_USE_ALLOCA "
BASELINE = "trunk"
doExplain = 0
doCachegrind = 1
doVdbeProfile = 0
doWal = 1
doDiff = 1
while test " $1 " != "" ; do
case $1 in
--nodiff)
doDiff = 0
; ;
--lean)
CC_OPTS = " $CC_OPTS $LEAN_OPTS "
; ;
--clang)
CC = clang
; ;
--gcc7)
CC = gcc-7
; ;
-*)
CC_OPTS = " $CC_OPTS $1 "
; ;
*)
BASELINE = $1
; ;
esac
shift
done
echo " NAME = $NAME " | tee summary-$NAME .txt
echo " CC_OPTS = $CC_OPTS " | tee -a summary-$NAME .txt
rm -f cachegrind.out.* jsonshell
$CC -g -Os -Wall -I. $CC_OPTS ./shell.c ./sqlite3.c -o jsonshell -ldl -lpthread
ls -l jsonshell | tee -a summary-$NAME .txt
2023-04-26 13:52:20 +00:00
home = ` echo $0 | sed -e 's,/[^/]*$,,' `
2023-04-26 15:58:08 +00:00
echo ./jsonshell json100mb.db " < $home /json-q1.txt "
valgrind --tool= cachegrind ./jsonshell json100mb.db <$home /json-q1.txt \
2023-04-26 13:25:30 +00:00
2>& 1 | tee -a summary-$NAME .txt
cg_anno.tcl cachegrind.out.* >jout-$NAME .txt
echo '*****************************************************' >>jout-$NAME .txt
sed 's/^[0-9=-]\{9\}/==00000==/' summary-$NAME .txt >>jout-$NAME .txt
if test " $NAME " != " $BASELINE " ; then
fossil xdiff --tk -c 20 jout-$BASELINE .txt jout-$NAME .txt
fi