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# 15package require Tk 16set f [open data.txt rb] 17set data [read $f] 18close $f 19canvas .c 20frame .b 21button .b.b1 -text X-Y -command refill-xy 22button .b.b2 -text X-Z -command refill-xz 23button .b.b3 -text Y-Z -command refill-yz 24pack .b.b1 .b.b2 .b.b3 -side left 25pack .c -side top -fill both -expand 1 26pack .b -side top 27proc 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} 33proc 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} 41proc 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} 49proc 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} 57refill-xy 58