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