Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Side by Side Diff: third_party/sqlite/src/ext/fts3/fts3speed.tcl

Issue 694353003: Get `gn gen` to succeed on Windows (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: remove GYP_DEFINES code Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1
2
3 #--------------------------------------------------------------------------
4 # This script contains several sub-programs used to test FTS3/FTS4
5 # performance. It does not run the queries directly, but generates SQL
6 # scripts that can be run using the shell tool.
7 #
8 # The following cases are tested:
9 #
10 # 1. Inserting documents into an FTS3 table.
11 # 2. Optimizing an FTS3 table (i.e. "INSERT INTO t1 VALUES('optimize')").
12 # 3. Deleting documents from an FTS3 table.
13 # 4. Querying FTS3 tables.
14 #
15
16 # Number of tokens in vocabulary. And number of tokens in each document.
17 #
18 set VOCAB_SIZE 2000
19 set DOC_SIZE 100
20
21 set NUM_INSERTS 100000
22 set NUM_SELECTS 1000
23
24 # Force everything in this script to be deterministic.
25 #
26 expr {srand(0)}
27
28 proc usage {} {
29 puts stderr "Usage: $::argv0 <rows> <selects>"
30 exit -1
31 }
32
33 proc sql {sql} {
34 puts $::fd $sql
35 }
36
37
38 # Return a list of $nWord randomly generated tokens each between 2 and 10
39 # characters in length.
40 #
41 proc build_vocab {nWord} {
42 set ret [list]
43 set chars [list a b c d e f g h i j k l m n o p q r s t u v w x y z]
44 for {set i 0} {$i<$nWord} {incr i} {
45 set len [expr {int((rand()*9.0)+2)}]
46 set term ""
47 for {set j 0} {$j<$len} {incr j} {
48 append term [lindex $chars [expr {int(rand()*[llength $chars])}]]
49 }
50 lappend ret $term
51 }
52 set ret
53 }
54
55 proc select_term {} {
56 set n [llength $::vocab]
57 set t [expr int(rand()*$n*3)]
58 if {$t>=2*$n} { set t [expr {($t-2*$n)/100}] }
59 if {$t>=$n} { set t [expr {($t-$n)/10}] }
60 lindex $::vocab $t
61 }
62
63 proc select_doc {nTerm} {
64 set ret [list]
65 for {set i 0} {$i<$nTerm} {incr i} {
66 lappend ret [select_term]
67 }
68 set ret
69 }
70
71 proc test_1 {nInsert} {
72 sql "PRAGMA synchronous = OFF;"
73 sql "DROP TABLE IF EXISTS t1;"
74 sql "CREATE VIRTUAL TABLE t1 USING fts4;"
75 for {set i 0} {$i < $nInsert} {incr i} {
76 set doc [select_doc $::DOC_SIZE]
77 sql "INSERT INTO t1 VALUES('$doc');"
78 }
79 }
80
81 proc test_2 {} {
82 sql "INSERT INTO t1(t1) VALUES('optimize');"
83 }
84
85 proc test_3 {nSelect} {
86 for {set i 0} {$i < $nSelect} {incr i} {
87 sql "SELECT count(*) FROM t1 WHERE t1 MATCH '[select_term]';"
88 }
89 }
90
91 proc test_4 {nSelect} {
92 for {set i 0} {$i < $nSelect} {incr i} {
93 sql "SELECT count(*) FROM t1 WHERE t1 MATCH '[select_term] [select_term]';"
94 }
95 }
96
97 if {[llength $argv]!=0} usage
98
99 set ::vocab [build_vocab $::VOCAB_SIZE]
100
101 set ::fd [open fts3speed_insert.sql w]
102 test_1 $NUM_INSERTS
103 close $::fd
104
105 set ::fd [open fts3speed_select.sql w]
106 test_3 $NUM_SELECTS
107 close $::fd
108
109 set ::fd [open fts3speed_select2.sql w]
110 test_4 $NUM_SELECTS
111 close $::fd
112
113 set ::fd [open fts3speed_optimize.sql w]
114 test_2
115 close $::fd
116
117 puts "Success. Created files:"
118 puts " fts3speed_insert.sql"
119 puts " fts3speed_select.sql"
120 puts " fts3speed_select2.sql"
121 puts " fts3speed_optimize.sql"
122
OLDNEW
« no previous file with comments | « third_party/sqlite/src/ext/fts3/fts3_write.c ('k') | third_party/sqlite/src/ext/fts3/mkfts3amal.tcl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698