Annotation of embedaddon/sqlite3/ext/rtree/rtree_perf.tcl, revision 1.1
1.1 ! misho 1:
! 2: set testdir [file join [file dirname $argv0] .. .. test]
! 3: source $testdir/tester.tcl
! 4:
! 5: ifcapable !rtree {
! 6: finish_test
! 7: return
! 8: }
! 9:
! 10: set NROW 10000
! 11: set NQUERY 500
! 12:
! 13: puts "Generating $NROW rows of data..."
! 14: set data [list]
! 15: for {set ii 0} {$ii < $NROW} {incr ii} {
! 16: set x1 [expr {rand()*1000}]
! 17: set x2 [expr {$x1+rand()*50}]
! 18: set y1 [expr {rand()*1000}]
! 19: set y2 [expr {$y1+rand()*50}]
! 20: lappend data $x1 $x2 $y1 $y2
! 21: }
! 22: puts "Finished generating data"
! 23:
! 24:
! 25: set sql1 {CREATE TABLE btree(ii INTEGER PRIMARY KEY, x1, x2, y1, y2)}
! 26: set sql2 {CREATE VIRTUAL TABLE rtree USING rtree(ii, x1, x2, y1, y2)}
! 27: puts "Creating tables:"
! 28: puts " $sql1"
! 29: puts " $sql2"
! 30: db eval $sql1
! 31: db eval $sql2
! 32:
! 33: db eval "pragma cache_size=100"
! 34:
! 35: puts -nonewline "Inserting into btree... "
! 36: flush stdout
! 37: set btree_time [time {db transaction {
! 38: set ii 1
! 39: foreach {x1 x2 y1 y2} $data {
! 40: db eval {INSERT INTO btree VALUES($ii, $x1, $x2, $y1, $y2)}
! 41: incr ii
! 42: }
! 43: }}]
! 44: puts "$btree_time"
! 45:
! 46: puts -nonewline "Inserting into rtree... "
! 47: flush stdout
! 48: set rtree_time [time {db transaction {
! 49: set ii 1
! 50: foreach {x1 x2 y1 y2} $data {
! 51: incr ii
! 52: db eval {INSERT INTO rtree VALUES($ii, $x1, $x2, $y1, $y2)}
! 53: }
! 54: }}]
! 55: puts "$rtree_time"
! 56:
! 57:
! 58: puts -nonewline "Selecting from btree... "
! 59: flush stdout
! 60: set btree_select_time [time {
! 61: foreach {x1 x2 y1 y2} [lrange $data 0 [expr $NQUERY*4-1]] {
! 62: db eval {SELECT * FROM btree WHERE x1<$x1 AND x2>$x2 AND y1<$y1 AND y2>$y2}
! 63: }
! 64: }]
! 65: puts "$btree_select_time"
! 66:
! 67: puts -nonewline "Selecting from rtree... "
! 68: flush stdout
! 69: set rtree_select_time [time {
! 70: foreach {x1 x2 y1 y2} [lrange $data 0 [expr $NQUERY*4-1]] {
! 71: db eval {SELECT * FROM rtree WHERE x1<$x1 AND x2>$x2 AND y1<$y1 AND y2>$y2}
! 72: }
! 73: }]
! 74: puts "$rtree_select_time"
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>