/ Hex Artifact Content
Login

Artifact 32e6c5f073d7426148a6936a0408f4b5b169aba5:


0000: 23 21 2f 75 73 72 2f 62 69 6e 2f 74 63 6c 73 68  #!/usr/bin/tclsh
0010: 0a 23 0a 23 20 54 68 69 73 20 73 63 72 69 70 74  .#.# This script
0020: 20 64 69 73 70 6c 61 79 73 20 74 68 65 20 66 69   displays the fi
0030: 65 6c 64 20 6f 66 20 72 65 63 74 61 6e 67 6c 65  eld of rectangle
0040: 73 20 75 73 65 64 20 62 79 20 2d 2d 74 65 73 74  s used by --test
0050: 73 65 74 20 72 74 72 65 65 0a 23 20 6f 66 20 73  set rtree.# of s
0060: 70 65 65 64 74 65 73 74 31 2e 20 20 52 75 6e 20  peedtest1.  Run 
0070: 74 68 69 73 20 73 63 72 69 70 74 20 61 73 20 66  this script as f
0080: 6f 6c 6c 6f 77 73 3a 0a 23 0a 23 20 20 20 20 20  ollows:.#.#     
0090: 20 72 6d 20 74 65 73 74 2e 64 62 0a 23 20 20 20   rm test.db.#   
00a0: 20 20 20 2e 2f 73 70 65 65 64 74 65 73 74 31 20     ./speedtest1 
00b0: 2d 2d 74 65 73 74 73 65 74 20 72 74 72 65 65 20  --testset rtree 
00c0: 2d 2d 73 69 7a 65 20 32 35 20 74 65 73 74 2e 64  --size 25 test.d
00d0: 62 0a 23 20 20 20 20 20 20 73 71 6c 69 74 65 33  b.#      sqlite3
00e0: 20 2d 2d 73 65 70 61 72 61 74 6f 72 20 27 20 27   --separator ' '
00f0: 20 74 65 73 74 2e 64 62 20 27 53 45 4c 45 43 54   test.db 'SELECT
0100: 20 2a 20 46 52 4f 4d 20 72 74 31 27 20 3e 64 61   * FROM rt1' >da
0110: 74 61 2e 74 78 74 0a 23 20 20 20 20 20 20 77 69  ta.txt.#      wi
0120: 73 68 20 73 68 6f 77 5f 73 70 65 65 64 74 65 73  sh show_speedtes
0130: 74 31 5f 72 74 72 65 65 2e 74 63 6c 0a 23 0a 23  t1_rtree.tcl.#.#
0140: 20 54 68 65 20 66 69 6c 65 6e 61 6d 65 20 22 64   The filename "d
0150: 61 74 61 2e 74 78 74 22 20 69 73 20 68 61 72 64  ata.txt" is hard
0160: 20 63 6f 64 65 64 20 69 6e 74 6f 20 74 68 69 73   coded into this
0170: 20 73 63 72 69 70 74 20 61 6e 64 20 73 6f 20 74   script and so t
0180: 68 61 74 20 6e 61 6d 65 0a 23 20 6d 75 73 74 20  hat name.# must 
0190: 62 65 20 75 73 65 64 20 6f 6e 20 6c 69 6e 65 73  be used on lines
01a0: 20 33 20 61 6e 64 20 34 20 61 62 6f 76 65 2e 20   3 and 4 above. 
01b0: 20 45 6c 73 65 77 68 65 72 65 2c 20 64 69 66 66   Elsewhere, diff
01c0: 65 72 65 6e 74 20 66 69 6c 65 6e 61 6d 65 73 20  erent filenames 
01d0: 63 61 6e 0a 23 20 62 65 20 75 73 65 64 2e 20 20  can.# be used.  
01e0: 54 68 65 20 2d 2d 73 69 7a 65 20 4e 20 70 61 72  The --size N par
01f0: 61 6d 65 74 65 72 20 63 61 6e 20 62 65 20 61 64  ameter can be ad
0200: 6a 75 73 74 65 64 20 61 73 20 64 65 73 69 72 65  justed as desire
0210: 64 2e 0a 23 0a 70 61 63 6b 61 67 65 20 72 65 71  d..#.package req
0220: 75 69 72 65 20 54 6b 0a 73 65 74 20 66 20 5b 6f  uire Tk.set f [o
0230: 70 65 6e 20 64 61 74 61 2e 74 78 74 20 72 62 5d  pen data.txt rb]
0240: 0a 73 65 74 20 64 61 74 61 20 5b 72 65 61 64 20  .set data [read 
0250: 24 66 5d 0a 63 6c 6f 73 65 20 24 66 0a 63 61 6e  $f].close $f.can
0260: 76 61 73 20 2e 63 0a 66 72 61 6d 65 20 2e 62 0a  vas .c.frame .b.
0270: 62 75 74 74 6f 6e 20 2e 62 2e 62 31 20 2d 74 65  button .b.b1 -te
0280: 78 74 20 58 2d 59 20 2d 63 6f 6d 6d 61 6e 64 20  xt X-Y -command 
0290: 72 65 66 69 6c 6c 2d 78 79 0a 62 75 74 74 6f 6e  refill-xy.button
02a0: 20 2e 62 2e 62 32 20 2d 74 65 78 74 20 58 2d 5a   .b.b2 -text X-Z
02b0: 20 2d 63 6f 6d 6d 61 6e 64 20 72 65 66 69 6c 6c   -command refill
02c0: 2d 78 7a 0a 62 75 74 74 6f 6e 20 2e 62 2e 62 33  -xz.button .b.b3
02d0: 20 2d 74 65 78 74 20 59 2d 5a 20 2d 63 6f 6d 6d   -text Y-Z -comm
02e0: 61 6e 64 20 72 65 66 69 6c 6c 2d 79 7a 0a 70 61  and refill-yz.pa
02f0: 63 6b 20 2e 62 2e 62 31 20 2e 62 2e 62 32 20 2e  ck .b.b1 .b.b2 .
0300: 62 2e 62 33 20 2d 73 69 64 65 20 6c 65 66 74 0a  b.b3 -side left.
0310: 70 61 63 6b 20 2e 63 20 2d 73 69 64 65 20 74 6f  pack .c -side to
0320: 70 20 2d 66 69 6c 6c 20 62 6f 74 68 20 2d 65 78  p -fill both -ex
0330: 70 61 6e 64 20 31 0a 70 61 63 6b 20 2e 62 20 2d  pand 1.pack .b -
0340: 73 69 64 65 20 74 6f 70 0a 70 72 6f 63 20 72 65  side top.proc re
0350: 73 69 7a 65 5f 63 61 6e 76 61 73 5f 74 6f 5f 66  size_canvas_to_f
0360: 69 74 20 7b 7d 20 7b 0a 20 20 66 6f 72 65 61 63  it {} {.  foreac
0370: 68 20 7b 78 30 20 79 30 20 78 31 20 79 31 7d 20  h {x0 y0 x1 y1} 
0380: 5b 2e 63 20 62 62 6f 78 20 61 6c 6c 5d 20 62 72  [.c bbox all] br
0390: 65 61 6b 0a 20 20 73 65 74 20 77 20 5b 65 78 70  eak.  set w [exp
03a0: 72 20 7b 24 78 31 2d 24 78 30 7d 5d 0a 20 20 73  r {$x1-$x0}].  s
03b0: 65 74 20 68 20 5b 65 78 70 72 20 7b 24 79 31 2d  et h [expr {$y1-
03c0: 24 79 30 7d 5d 0a 20 20 2e 63 20 63 6f 6e 66 69  $y0}].  .c confi
03d0: 67 20 2d 77 69 64 74 68 20 24 77 20 2d 68 65 69  g -width $w -hei
03e0: 67 68 74 20 24 68 0a 7d 0a 70 72 6f 63 20 72 65  ght $h.}.proc re
03f0: 66 69 6c 6c 2d 78 79 20 7b 7d 20 7b 0a 20 20 2e  fill-xy {} {.  .
0400: 63 20 64 65 6c 65 74 65 20 61 6c 6c 0a 20 20 66  c delete all.  f
0410: 6f 72 65 61 63 68 20 7b 69 64 20 78 30 20 78 31  oreach {id x0 x1
0420: 20 79 30 20 79 31 20 7a 30 20 7a 31 7d 20 24 3a   y0 y1 z0 z1} $:
0430: 3a 64 61 74 61 20 7b 0a 20 20 20 20 2e 63 20 63  :data {.    .c c
0440: 72 65 61 74 65 20 72 65 63 74 61 6e 67 6c 65 20  reate rectangle 
0450: 24 78 30 20 24 79 30 20 24 78 31 20 24 79 31 0a  $x0 $y0 $x1 $y1.
0460: 20 20 7d 0a 20 20 2e 63 20 73 63 61 6c 65 20 61    }.  .c scale a
0470: 6c 6c 20 30 20 30 20 30 2e 30 35 20 30 2e 30 35  ll 0 0 0.05 0.05
0480: 0a 20 20 72 65 73 69 7a 65 5f 63 61 6e 76 61 73  .  resize_canvas
0490: 5f 74 6f 5f 66 69 74 0a 7d 0a 70 72 6f 63 20 72  _to_fit.}.proc r
04a0: 65 66 69 6c 6c 2d 78 7a 20 7b 7d 20 7b 0a 20 20  efill-xz {} {.  
04b0: 2e 63 20 64 65 6c 65 74 65 20 61 6c 6c 0a 20 20  .c delete all.  
04c0: 66 6f 72 65 61 63 68 20 7b 69 64 20 78 30 20 78  foreach {id x0 x
04d0: 31 20 79 30 20 79 31 20 7a 30 20 7a 31 7d 20 24  1 y0 y1 z0 z1} $
04e0: 3a 3a 64 61 74 61 20 7b 0a 20 20 20 20 2e 63 20  ::data {.    .c 
04f0: 63 72 65 61 74 65 20 72 65 63 74 61 6e 67 6c 65  create rectangle
0500: 20 24 78 30 20 24 7a 30 20 24 78 31 20 24 7a 31   $x0 $z0 $x1 $z1
0510: 0a 20 20 7d 0a 20 20 2e 63 20 73 63 61 6c 65 20  .  }.  .c scale 
0520: 61 6c 6c 20 30 20 30 20 30 2e 30 35 20 30 2e 30  all 0 0 0.05 0.0
0530: 35 0a 20 20 72 65 73 69 7a 65 5f 63 61 6e 76 61  5.  resize_canva
0540: 73 5f 74 6f 5f 66 69 74 0a 7d 0a 70 72 6f 63 20  s_to_fit.}.proc 
0550: 72 65 66 69 6c 6c 2d 79 7a 20 7b 7d 20 7b 0a 20  refill-yz {} {. 
0560: 20 2e 63 20 64 65 6c 65 74 65 20 61 6c 6c 0a 20   .c delete all. 
0570: 20 66 6f 72 65 61 63 68 20 7b 69 64 20 78 30 20   foreach {id x0 
0580: 78 31 20 79 30 20 79 31 20 7a 30 20 7a 31 7d 20  x1 y0 y1 z0 z1} 
0590: 24 3a 3a 64 61 74 61 20 7b 0a 20 20 20 20 2e 63  $::data {.    .c
05a0: 20 63 72 65 61 74 65 20 72 65 63 74 61 6e 67 6c   create rectangl
05b0: 65 20 24 79 30 20 24 7a 30 20 24 79 31 20 24 7a  e $y0 $z0 $y1 $z
05c0: 31 0a 20 20 7d 0a 20 20 2e 63 20 73 63 61 6c 65  1.  }.  .c scale
05d0: 20 61 6c 6c 20 30 20 30 20 30 2e 30 35 20 30 2e   all 0 0 0.05 0.
05e0: 30 35 0a 20 20 72 65 73 69 7a 65 5f 63 61 6e 76  05.  resize_canv
05f0: 61 73 5f 74 6f 5f 66 69 74 0a 7d 0a 72 65 66 69  as_to_fit.}.refi
0600: 6c 6c 2d 78 79 0a                                ll-xy.