Annotation of embedaddon/sqlite3/ext/rtree/rtree_perf.tcl, revision 1.1.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>