#!/usr/bin/tclsh # # This script displays the field of rectangles used by --testset rtree # of speedtest1. Run this script as follows: # # rm test.db # ./speedtest1 --testset rtree --size 25 test.db # sqlite3 --separator ' ' test.db 'SELECT * FROM rt1' >data.txt # wish show_speedtest1_rtree.tcl # # The filename "data.txt" is hard coded into this script and so that name # must be used on lines 3 and 4 above. Elsewhere, different filenames can # be used. The --size N parameter can be adjusted as desired. # package require Tk set f [open data.txt rb] set data [read $f] close $f canvas .c frame .b button .b.b1 -text X-Y -command refill-xy button .b.b2 -text X-Z -command refill-xz button .b.b3 -text Y-Z -command refill-yz pack .b.b1 .b.b2 .b.b3 -side left pack .c -side top -fill both -expand 1 pack .b -side top proc resize_canvas_to_fit {} { foreach {x0 y0 x1 y1} [.c bbox all] break set w [expr {$x1-$x0}] set h [expr {$y1-$y0}] .c config -width $w -height $h } proc refill-xy {} { .c delete all foreach {id x0 x1 y0 y1 z0 z1} $::data { .c create rectangle $x0 $y0 $x1 $y1 } .c scale all 0 0 0.05 0.05 resize_canvas_to_fit } proc refill-xz {} { .c delete all foreach {id x0 x1 y0 y1 z0 z1} $::data { .c create rectangle $x0 $z0 $x1 $z1 } .c scale all 0 0 0.05 0.05 resize_canvas_to_fit } proc refill-yz {} { .c delete all foreach {id x0 x1 y0 y1 z0 z1} $::data { .c create rectangle $y0 $z0 $y1 $z1 } .c scale all 0 0 0.05 0.05 resize_canvas_to_fit } refill-xy