/ Hex Artifact Content
Login
SQLite training in Houston TX on 2019-11-05 (details)
Part of the 2019 Tcl Conference

Artifact 4761a9c4b3530907562314d7757995787f7aef8f:


0000: 23 21 2f 62 69 6e 2f 62 61 73 68 0a 23 0a 23 20  #!/bin/bash.#.# 
0010: 41 20 73 63 72 69 70 74 20 66 6f 72 20 72 75 6e  A script for run
0020: 6e 69 6e 67 20 73 70 65 65 64 20 74 65 73 74 73  ning speed tests
0030: 20 75 73 69 6e 67 20 6b 76 74 65 73 74 2e 0a 23   using kvtest..#
0040: 0a 23 20 54 68 65 20 74 65 73 74 20 64 61 74 61  .# The test data
0050: 62 61 73 65 20 6d 75 73 74 20 62 65 20 73 65 74  base must be set
0060: 20 75 70 20 66 69 72 73 74 2e 20 20 52 65 63 6f   up first.  Reco
0070: 6d 6d 65 6e 64 65 64 0a 23 20 63 6f 6d 6d 61 6e  mmended.# comman
0080: 64 2d 6c 69 6e 65 3a 0a 23 0a 23 20 20 20 20 2e  d-line:.#.#    .
0090: 2f 6b 76 74 65 73 74 20 69 6e 69 74 20 6b 76 74  /kvtest init kvt
00a0: 65 73 74 2e 64 62 20 2d 2d 63 6f 75 6e 74 20 31  est.db --count 1
00b0: 30 30 4b 20 2d 2d 73 69 7a 65 20 31 32 4b 20 2d  00K --size 12K -
00c0: 2d 76 61 72 69 61 6e 63 65 20 35 4b 0a 0a 69 66  -variance 5K..if
00d0: 20 74 65 73 74 20 22 24 31 22 20 3d 20 22 22 0a   test "$1" = "".
00e0: 74 68 65 6e 0a 20 20 65 63 68 6f 20 22 55 73 61  then.  echo "Usa
00f0: 67 65 3a 20 24 30 20 4f 55 54 50 55 54 46 49 4c  ge: $0 OUTPUTFIL
0100: 45 20 5b 4f 50 54 49 4f 4e 53 5d 22 0a 20 20 65  E [OPTIONS]".  e
0110: 78 69 74 0a 66 69 0a 4e 41 4d 45 3d 24 31 0a 73  xit.fi.NAME=$1.s
0120: 68 69 66 74 0a 4f 50 54 53 3d 22 2d 44 53 51 4c  hift.OPTS="-DSQL
0130: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30  ITE_THREADSAFE=0
0140: 20 2d 44 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c   -DSQLITE_OMIT_L
0150: 4f 41 44 5f 45 58 54 45 4e 53 49 4f 4e 20 2d 44  OAD_EXTENSION -D
0160: 53 51 4c 49 54 45 5f 44 49 52 45 43 54 5f 4f 56  SQLITE_DIRECT_OV
0170: 45 52 46 4c 4f 57 5f 52 45 41 44 20 2d 44 55 53  ERFLOW_READ -DUS
0180: 45 5f 50 52 45 41 44 22 0a 4b 56 41 52 47 53 3d  E_PREAD".KVARGS=
0190: 22 2d 2d 63 6f 75 6e 74 20 31 30 30 4b 20 2d 2d  "--count 100K --
01a0: 73 74 61 74 73 22 0a 67 63 63 20 2d 67 20 2d 4f  stats".gcc -g -O
01b0: 73 20 2d 49 2e 20 24 4f 50 54 53 20 24 2a 20 6b  s -I. $OPTS $* k
01c0: 76 74 65 73 74 2e 63 20 73 71 6c 69 74 65 33 2e  vtest.c sqlite3.
01d0: 63 20 2d 6f 20 6b 76 74 65 73 74 0a 0a 23 20 46  c -o kvtest..# F
01e0: 69 72 73 74 20 72 75 6e 20 75 73 69 6e 67 20 53  irst run using S
01f0: 51 4c 0a 72 6d 20 63 61 63 68 65 67 72 69 6e 64  QL.rm cachegrind
0200: 2e 6f 75 74 2e 5b 31 2d 39 5d 5b 30 2d 39 5d 2a  .out.[1-9][0-9]*
0210: 0a 76 61 6c 67 72 69 6e 64 20 2d 2d 74 6f 6f 6c  .valgrind --tool
0220: 3d 63 61 63 68 65 67 72 69 6e 64 20 2e 2f 6b 76  =cachegrind ./kv
0230: 74 65 73 74 20 72 75 6e 20 6b 76 74 65 73 74 2e  test run kvtest.
0240: 64 62 20 24 4b 56 41 52 47 53 20 32 3e 26 31 20  db $KVARGS 2>&1 
0250: 7c 20 74 65 65 20 73 75 6d 6d 61 72 79 2d 6b 76  | tee summary-kv
0260: 74 65 73 74 2d 24 4e 41 4d 45 2e 74 78 74 0a 6d  test-$NAME.txt.m
0270: 76 20 63 61 63 68 65 67 72 69 6e 64 2e 6f 75 74  v cachegrind.out
0280: 2e 5b 31 2d 39 5d 5b 30 2d 39 5d 2a 20 63 61 63  .[1-9][0-9]* cac
0290: 68 65 67 72 69 6e 64 2e 6f 75 74 2e 73 71 6c 2d  hegrind.out.sql-
02a0: 24 4e 41 4d 45 0a 63 67 5f 61 6e 6e 6f 2e 74 63  $NAME.cg_anno.tc
02b0: 6c 20 63 61 63 68 65 67 72 69 6e 64 2e 6f 75 74  l cachegrind.out
02c0: 2e 73 71 6c 2d 24 4e 41 4d 45 20 3e 63 6f 75 74  .sql-$NAME >cout
02d0: 2d 6b 76 74 65 73 74 2d 73 71 6c 2d 24 4e 41 4d  -kvtest-sql-$NAM
02e0: 45 2e 74 78 74 0a 0a 23 20 53 65 63 6f 6e 64 20  E.txt..# Second 
02f0: 72 75 6e 20 75 73 69 6e 67 20 74 68 65 20 73 71  run using the sq
0300: 6c 69 74 65 33 5f 62 6c 6f 62 20 6f 62 6a 65 63  lite3_blob objec
0310: 74 0a 76 61 6c 67 72 69 6e 64 20 2d 2d 74 6f 6f  t.valgrind --too
0320: 6c 3d 63 61 63 68 65 67 72 69 6e 64 20 2e 2f 6b  l=cachegrind ./k
0330: 76 74 65 73 74 20 72 75 6e 20 6b 76 74 65 73 74  vtest run kvtest
0340: 2e 64 62 20 24 4b 56 41 52 47 53 20 2d 2d 62 6c  .db $KVARGS --bl
0350: 6f 62 2d 61 70 69 20 32 3e 26 31 20 7c 20 74 65  ob-api 2>&1 | te
0360: 65 20 2d 61 20 73 75 6d 6d 61 72 79 2d 6b 76 74  e -a summary-kvt
0370: 65 73 74 2d 24 4e 41 4d 45 2e 74 78 74 0a 6d 76  est-$NAME.txt.mv
0380: 20 63 61 63 68 65 67 72 69 6e 64 2e 6f 75 74 2e   cachegrind.out.
0390: 5b 31 2d 39 5d 5b 30 2d 39 5d 2a 20 63 61 63 68  [1-9][0-9]* cach
03a0: 65 67 72 69 6e 64 2e 6f 75 74 2e 24 4e 41 4d 45  egrind.out.$NAME
03b0: 0a 63 67 5f 61 6e 6e 6f 2e 74 63 6c 20 63 61 63  .cg_anno.tcl cac
03c0: 68 65 67 72 69 6e 64 2e 6f 75 74 2e 24 4e 41 4d  hegrind.out.$NAM
03d0: 45 20 3e 63 6f 75 74 2d 6b 76 74 65 73 74 2d 24  E >cout-kvtest-$
03e0: 4e 41 4d 45 2e 74 78 74 0a 0a 23 20 44 69 66 66  NAME.txt..# Diff
03f0: 20 74 68 65 20 73 71 6c 69 74 65 33 5f 62 6c 6f   the sqlite3_blo
0400: 62 20 41 50 49 20 61 6e 61 6c 79 73 69 73 20 66  b API analysis f
0410: 6f 72 20 6e 6f 6e 2d 74 72 75 6e 6b 20 72 75 6e  or non-trunk run
0420: 73 2e 0a 69 66 20 74 65 73 74 20 22 24 4e 41 4d  s..if test "$NAM
0430: 45 22 20 21 3d 20 22 74 72 75 6e 6b 22 3b 20 74  E" != "trunk"; t
0440: 68 65 6e 0a 20 20 66 6f 73 73 69 6c 20 74 65 73  hen.  fossil tes
0450: 74 2d 64 69 66 66 20 2d 2d 74 6b 20 63 6f 75 74  t-diff --tk cout
0460: 2d 6b 76 74 65 73 74 2d 74 72 75 6e 6b 2e 74 78  -kvtest-trunk.tx
0470: 74 20 63 6f 75 74 2d 6b 76 74 65 73 74 2d 24 4e  t cout-kvtest-$N
0480: 41 4d 45 2e 74 78 74 20 26 0a 66 69 0a           AME.txt &.fi.