gitlab.com/CoiaPrant/sqlite3@v1.19.1/testdata/tcl/show_speedtest1_rtree.tcl (about)

     1  #!/usr/bin/tclsh
     2  #
     3  # This script displays the field of rectangles used by --testset rtree
     4  # of speedtest1.  Run this script as follows:
     5  #
     6  #      rm test.db
     7  #      ./speedtest1 --testset rtree --size 25 test.db
     8  #      sqlite3 --separator ' ' test.db 'SELECT * FROM rt1' >data.txt
     9  #      wish show_speedtest1_rtree.tcl
    10  #
    11  # The filename "data.txt" is hard coded into this script and so that name
    12  # must be used on lines 3 and 4 above.  Elsewhere, different filenames can
    13  # be used.  The --size N parameter can be adjusted as desired.
    14  #
    15  package require Tk
    16  set f [open data.txt rb]
    17  set data [read $f]
    18  close $f
    19  canvas .c
    20  frame .b
    21  button .b.b1 -text X-Y -command refill-xy
    22  button .b.b2 -text X-Z -command refill-xz
    23  button .b.b3 -text Y-Z -command refill-yz
    24  pack .b.b1 .b.b2 .b.b3 -side left
    25  pack .c -side top -fill both -expand 1
    26  pack .b -side top
    27  proc resize_canvas_to_fit {} {
    28    foreach {x0 y0 x1 y1} [.c bbox all] break
    29    set w [expr {$x1-$x0}]
    30    set h [expr {$y1-$y0}]
    31    .c config -width $w -height $h
    32  }
    33  proc refill-xy {} {
    34    .c delete all
    35    foreach {id x0 x1 y0 y1 z0 z1} $::data {
    36      .c create rectangle $x0 $y0 $x1 $y1
    37    }
    38    .c scale all 0 0 0.05 0.05
    39    resize_canvas_to_fit
    40  }
    41  proc refill-xz {} {
    42    .c delete all
    43    foreach {id x0 x1 y0 y1 z0 z1} $::data {
    44      .c create rectangle $x0 $z0 $x1 $z1
    45    }
    46    .c scale all 0 0 0.05 0.05
    47    resize_canvas_to_fit
    48  }
    49  proc refill-yz {} {
    50    .c delete all
    51    foreach {id x0 x1 y0 y1 z0 z1} $::data {
    52      .c create rectangle $y0 $z0 $y1 $z1
    53    }
    54    .c scale all 0 0 0.05 0.05
    55    resize_canvas_to_fit
    56  }
    57  refill-xy