/ Hex Artifact Content
Login

Artifact 0ae485af4fe9f826e2b494be8c81f8ca9e222a4a:


0000: 23 21 2f 62 69 6e 2f 62 61 73 68 0a 23 0a 23 20  #!/bin/bash.#.# 
0010: 54 68 69 73 20 69 73 20 61 20 74 65 6d 70 6c 61  This is a templa
0020: 74 65 20 66 6f 72 20 61 20 73 63 72 69 70 74 20  te for a script 
0030: 75 73 65 64 20 66 6f 72 20 64 61 79 2d 74 6f 2d  used for day-to-
0040: 64 61 79 20 73 69 7a 65 20 61 6e 64 20 0a 23 20  day size and .# 
0050: 70 65 72 66 6f 72 6d 61 6e 63 65 20 6d 6f 6e 69  performance moni
0060: 74 6f 72 69 6e 67 20 6f 66 20 53 51 4c 69 74 65  toring of SQLite
0070: 2e 20 20 54 79 70 69 63 61 6c 20 75 73 61 67 65  .  Typical usage
0080: 3a 0a 23 0a 23 20 20 20 20 20 73 68 20 72 75 6e  :.#.#     sh run
0090: 2d 73 70 65 65 64 2d 74 65 73 74 2e 73 68 20 74  -speed-test.sh t
00a0: 72 75 6e 6b 20 20 23 20 20 42 61 73 65 6c 69 6e  runk  #  Baselin
00b0: 65 20 6d 65 61 73 75 72 65 6d 65 6e 74 20 6f 66  e measurement of
00c0: 20 74 72 75 6e 6b 0a 23 20 20 20 20 20 73 68 20   trunk.#     sh 
00d0: 72 75 6e 2d 73 70 65 65 64 2d 74 65 73 74 2e 73  run-speed-test.s
00e0: 68 20 78 31 20 20 20 20 20 23 20 4d 65 61 73 75  h x1     # Measu
00f0: 72 65 20 73 6f 6d 65 20 65 78 70 65 72 69 6d 65  re some experime
0100: 6e 74 61 6c 20 63 68 61 6e 67 65 0a 23 20 20 20  ntal change.#   
0110: 20 20 66 6f 73 73 69 6c 20 74 65 73 74 2d 64 69    fossil test-di
0120: 66 66 20 2d 2d 74 6b 20 63 6f 75 74 2d 74 72 75  ff --tk cout-tru
0130: 6e 6b 2e 74 78 74 20 63 6f 75 74 2d 78 31 2e 74  nk.txt cout-x1.t
0140: 78 74 20 20 20 23 20 56 69 65 77 20 63 68 61 6e  xt   # View chan
0150: 61 67 65 73 0a 23 0a 23 20 54 68 65 72 65 20 61  ages.#.# There a
0160: 72 65 20 6d 75 6c 74 69 70 6c 65 20 6f 75 74 70  re multiple outp
0170: 75 74 20 66 69 6c 65 73 2c 20 61 6c 6c 20 77 69  ut files, all wi
0180: 74 68 20 61 20 62 61 73 65 20 6e 61 6d 65 20 67  th a base name g
0190: 69 76 65 6e 20 62 79 0a 23 20 74 68 65 20 66 69  iven by.# the fi
01a0: 72 73 74 20 61 72 67 75 6d 65 6e 74 3a 0a 23 0a  rst argument:.#.
01b0: 23 20 20 20 20 20 73 75 6d 6d 61 72 79 2d 24 42  #     summary-$B
01c0: 41 53 45 2e 74 78 74 20 20 20 20 20 20 20 20 20  ASE.txt         
01d0: 20 20 23 20 43 6f 70 79 20 6f 66 20 73 74 61 6e    # Copy of stan
01e0: 64 61 72 64 20 6f 75 74 70 75 74 0a 23 20 20 20  dard output.#   
01f0: 20 20 63 6f 75 74 2d 24 42 41 53 45 2e 74 78 74    cout-$BASE.txt
0200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20                # 
0210: 63 61 63 68 65 67 72 69 6e 64 20 6f 75 74 70 75  cachegrind outpu
0220: 74 0a 23 20 20 20 20 20 65 78 70 6c 61 69 6e 2d  t.#     explain-
0230: 24 42 41 53 45 2e 74 78 74 20 20 20 20 20 20 20  $BASE.txt       
0240: 20 20 20 20 23 20 45 58 50 4c 41 49 4e 20 6c 69      # EXPLAIN li
0250: 73 74 69 6e 67 73 0a 23 0a 69 66 20 74 65 73 74  stings.#.if test
0260: 20 22 24 31 22 20 3d 20 22 22 0a 74 68 65 6e 0a   "$1" = "".then.
0270: 20 20 65 63 68 6f 20 22 55 73 61 67 65 3a 20 24    echo "Usage: $
0280: 30 20 4f 55 54 50 55 54 46 49 4c 45 20 5b 4f 50  0 OUTPUTFILE [OP
0290: 54 49 4f 4e 53 5d 22 0a 20 20 65 78 69 74 0a 66  TIONS]".  exit.f
02a0: 69 0a 4e 41 4d 45 3d 24 31 0a 73 68 69 66 74 0a  i.NAME=$1.shift.
02b0: 43 43 5f 4f 50 54 53 3d 22 2d 44 53 51 4c 49 54  CC_OPTS="-DSQLIT
02c0: 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45 22 0a  E_ENABLE_RTREE".
02d0: 53 50 45 45 44 54 45 53 54 5f 4f 50 54 53 3d 22  SPEEDTEST_OPTS="
02e0: 2d 2d 73 68 72 69 6e 6b 2d 6d 65 6d 6f 72 79 20  --shrink-memory 
02f0: 2d 2d 72 65 70 72 65 70 61 72 65 22 0a 53 49 5a  --reprepare".SIZ
0300: 45 3d 35 0a 77 68 69 6c 65 20 74 65 73 74 20 22  E=5.while test "
0310: 24 31 22 20 21 3d 20 22 22 3b 20 64 6f 0a 20 20  $1" != ""; do.  
0320: 63 61 73 65 20 24 31 20 69 6e 0a 20 20 20 20 2d  case $1 in.    -
0330: 2d 72 65 70 72 65 70 61 72 65 29 0a 20 20 20 20  -reprepare).    
0340: 20 20 20 20 53 50 45 45 44 54 45 53 54 5f 4f 50      SPEEDTEST_OP
0350: 54 53 3d 22 24 53 50 45 45 44 54 45 53 54 5f 4f  TS="$SPEEDTEST_O
0360: 50 54 53 20 24 31 22 0a 20 20 20 20 20 20 20 20  PTS $1".        
0370: 3b 3b 0a 20 20 20 20 2d 2d 61 75 74 6f 76 61 63  ;;.    --autovac
0380: 75 75 6d 29 0a 20 20 20 20 20 20 20 20 53 50 45  uum).        SPE
0390: 45 44 54 45 53 54 5f 4f 50 54 53 3d 22 24 53 50  EDTEST_OPTS="$SP
03a0: 45 45 44 54 45 53 54 5f 4f 50 54 53 20 24 31 22  EEDTEST_OPTS $1"
03b0: 0a 20 20 20 20 20 20 20 20 3b 3b 0a 20 20 20 20  .        ;;.    
03c0: 2d 2d 75 74 66 31 36 62 65 29 0a 20 20 20 20 20  --utf16be).     
03d0: 20 20 20 53 50 45 45 44 54 45 53 54 5f 4f 50 54     SPEEDTEST_OPT
03e0: 53 3d 22 24 53 50 45 45 44 54 45 53 54 5f 4f 50  S="$SPEEDTEST_OP
03f0: 54 53 20 24 31 22 0a 20 20 20 20 20 20 20 20 3b  TS $1".        ;
0400: 3b 0a 20 20 20 20 2d 2d 77 69 74 68 6f 75 74 2d  ;.    --without-
0410: 72 6f 77 69 64 29 0a 20 20 20 20 20 20 20 20 53  rowid).        S
0420: 50 45 45 44 54 45 53 54 5f 4f 50 54 53 3d 22 24  PEEDTEST_OPTS="$
0430: 53 50 45 45 44 54 45 53 54 5f 4f 50 54 53 20 24  SPEEDTEST_OPTS $
0440: 31 22 0a 20 20 20 20 20 20 20 20 3b 3b 0a 20 20  1".        ;;.  
0450: 20 20 2d 2d 73 69 7a 65 29 0a 20 20 20 20 20 20    --size).      
0460: 20 20 73 68 69 66 74 3b 20 53 49 5a 45 3d 24 31    shift; SIZE=$1
0470: 0a 20 20 20 20 20 20 20 20 3b 3b 0a 20 20 20 20  .        ;;.    
0480: 2a 29 0a 20 20 20 20 20 20 20 20 43 43 5f 4f 50  *).        CC_OP
0490: 54 53 3d 22 24 43 43 5f 4f 50 54 53 20 24 31 22  TS="$CC_OPTS $1"
04a0: 0a 20 20 20 20 20 20 20 20 3b 3b 0a 20 20 65 73  .        ;;.  es
04b0: 61 63 0a 20 20 73 68 69 66 74 0a 64 6f 6e 65 0a  ac.  shift.done.
04c0: 53 50 45 45 44 54 45 53 54 5f 4f 50 54 53 3d 22  SPEEDTEST_OPTS="
04d0: 24 53 50 45 45 44 54 45 53 54 5f 4f 50 54 53 20  $SPEEDTEST_OPTS 
04e0: 2d 2d 73 69 7a 65 20 24 53 49 5a 45 22 0a 65 63  --size $SIZE".ec
04f0: 68 6f 20 22 4e 41 4d 45 20 20 20 20 20 20 20 20  ho "NAME        
0500: 20 20 20 3d 20 24 4e 41 4d 45 22 20 7c 20 74 65     = $NAME" | te
0510: 65 20 73 75 6d 6d 61 72 79 2d 24 4e 41 4d 45 2e  e summary-$NAME.
0520: 74 78 74 0a 65 63 68 6f 20 22 53 50 45 45 44 54  txt.echo "SPEEDT
0530: 45 53 54 5f 4f 50 54 53 20 3d 20 24 53 50 45 45  EST_OPTS = $SPEE
0540: 44 54 45 53 54 5f 4f 50 54 53 22 20 7c 20 74 65  DTEST_OPTS" | te
0550: 65 20 2d 61 20 73 75 6d 6d 61 72 79 2d 24 4e 41  e -a summary-$NA
0560: 4d 45 2e 74 78 74 0a 65 63 68 6f 20 22 43 43 5f  ME.txt.echo "CC_
0570: 4f 50 54 53 20 20 20 20 20 20 20 20 3d 20 24 43  OPTS        = $C
0580: 43 5f 4f 50 54 53 22 20 7c 20 74 65 65 20 2d 61  C_OPTS" | tee -a
0590: 20 73 75 6d 6d 61 72 79 2d 24 4e 41 4d 45 2e 74   summary-$NAME.t
05a0: 78 74 0a 72 6d 20 2d 66 20 63 61 63 68 65 67 72  xt.rm -f cachegr
05b0: 69 6e 64 2e 6f 75 74 2e 2a 20 73 70 65 65 64 74  ind.out.* speedt
05c0: 65 73 74 31 20 73 70 65 65 64 74 65 73 74 31 2e  est1 speedtest1.
05d0: 64 62 20 73 71 6c 69 74 65 33 2e 6f 0a 67 63 63  db sqlite3.o.gcc
05e0: 20 2d 67 20 2d 4f 73 20 2d 57 61 6c 6c 20 2d 49   -g -Os -Wall -I
05f0: 2e 20 24 43 43 5f 4f 50 54 53 20 2d 63 20 73 71  . $CC_OPTS -c sq
0600: 6c 69 74 65 33 2e 63 0a 73 69 7a 65 20 73 71 6c  lite3.c.size sql
0610: 69 74 65 33 2e 6f 20 7c 20 74 65 65 20 2d 61 20  ite3.o | tee -a 
0620: 73 75 6d 6d 61 72 79 2d 24 4e 41 4d 45 2e 74 78  summary-$NAME.tx
0630: 74 0a 67 63 63 20 2d 67 20 2d 4f 73 20 2d 57 61  t.gcc -g -Os -Wa
0640: 6c 6c 20 2d 49 2e 20 24 43 43 5f 4f 50 54 53 20  ll -I. $CC_OPTS 
0650: 5c 0a 20 20 20 2d 44 53 51 4c 49 54 45 5f 45 4e  \.   -DSQLITE_EN
0660: 41 42 4c 45 5f 45 58 50 4c 41 49 4e 5f 43 4f 4d  ABLE_EXPLAIN_COM
0670: 4d 45 4e 54 53 20 5c 0a 20 20 20 2e 2f 73 68 65  MENTS \.   ./she
0680: 6c 6c 2e 63 20 2e 2f 73 71 6c 69 74 65 33 2e 63  ll.c ./sqlite3.c
0690: 20 2d 6f 20 73 71 6c 69 74 65 33 20 2d 6c 64 6c   -o sqlite3 -ldl
06a0: 20 2d 6c 70 74 68 72 65 61 64 0a 53 52 43 3d 2e   -lpthread.SRC=.
06b0: 2f 73 70 65 65 64 74 65 73 74 31 2e 63 0a 67 63  /speedtest1.c.gc
06c0: 63 20 2d 67 20 2d 4f 73 20 2d 57 61 6c 6c 20 2d  c -g -Os -Wall -
06d0: 49 2e 20 24 43 43 5f 4f 50 54 53 20 24 53 52 43  I. $CC_OPTS $SRC
06e0: 20 2e 2f 73 71 6c 69 74 65 33 2e 6f 20 2d 6f 20   ./sqlite3.o -o 
06f0: 73 70 65 65 64 74 65 73 74 31 20 2d 6c 64 6c 20  speedtest1 -ldl 
0700: 2d 6c 70 74 68 72 65 61 64 0a 6c 73 20 2d 6c 20  -lpthread.ls -l 
0710: 73 70 65 65 64 74 65 73 74 31 20 7c 20 74 65 65  speedtest1 | tee
0720: 20 2d 61 20 73 75 6d 6d 61 72 79 2d 24 4e 41 4d   -a summary-$NAM
0730: 45 2e 74 78 74 0a 76 61 6c 67 72 69 6e 64 20 2d  E.txt.valgrind -
0740: 2d 74 6f 6f 6c 3d 63 61 63 68 65 67 72 69 6e 64  -tool=cachegrind
0750: 20 2e 2f 73 70 65 65 64 74 65 73 74 31 20 73 70   ./speedtest1 sp
0760: 65 65 64 74 65 73 74 31 2e 64 62 20 5c 0a 20 20  eedtest1.db \.  
0770: 20 20 24 53 50 45 45 44 54 45 53 54 5f 4f 50 54    $SPEEDTEST_OPT
0780: 53 20 32 3e 26 31 20 7c 20 74 65 65 20 2d 61 20  S 2>&1 | tee -a 
0790: 73 75 6d 6d 61 72 79 2d 24 4e 41 4d 45 2e 74 78  summary-$NAME.tx
07a0: 74 0a 73 69 7a 65 20 73 71 6c 69 74 65 33 2e 6f  t.size sqlite3.o
07b0: 20 7c 20 74 65 65 20 2d 61 20 73 75 6d 6d 61 72   | tee -a summar
07c0: 79 2d 24 4e 41 4d 45 2e 74 78 74 0a 77 63 20 73  y-$NAME.txt.wc s
07d0: 71 6c 69 74 65 33 2e 63 0a 63 67 5f 61 6e 6e 6f  qlite3.c.cg_anno
07e0: 2e 74 63 6c 20 63 61 63 68 65 67 72 69 6e 64 2e  .tcl cachegrind.
07f0: 6f 75 74 2e 2a 20 3e 63 6f 75 74 2d 24 4e 41 4d  out.* >cout-$NAM
0800: 45 2e 74 78 74 0a 2e 2f 73 70 65 65 64 74 65 73  E.txt../speedtes
0810: 74 31 20 2d 2d 65 78 70 6c 61 69 6e 20 24 53 50  t1 --explain $SP
0820: 45 45 44 54 45 53 54 5f 4f 50 54 53 20 7c 20 2e  EEDTEST_OPTS | .
0830: 2f 73 71 6c 69 74 65 33 20 3e 65 78 70 6c 61 69  /sqlite3 >explai
0840: 6e 2d 24 4e 41 4d 45 2e 74 78 74 0a              n-$NAME.txt.