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>