1# Timing of the view sort operation
2
3package require Mk4tcl
4
5proc timedRun {tag count args} {
6  set usec [lindex [time $args $count] 0]
7  append ::stats($tag) [format {%9.2f} [expr {$count*$usec/1000.0}]]
8}
9
10proc fill {seq} {
11  global warray
12  foreach {k v} [array get warray] {
13    mk::row append db.words text $k$seq
14  }
15}
16
17set step 40000
18set mult 7
19
20#set fd [open /usr/share/dict/words]
21set fd [open words]
22for {set i 0} {$i < $step && [gets $fd line] >= 0} {incr i} {
23  set warray($line) $i
24}
25close $fd
26
27puts [clock format [clock seconds]]
28
29file delete _large.mk
30mk::file open db _large.mk -nocommit
31mk::view layout db.words text
32
33for {set i 0} {$i < $mult} {incr i} {
34  append stats(count) [format {%9d} [expr {($i+1)*$step}]]
35  timedRun fill 1 fill $i
36  timedRun sort 1 mk::select db.words -sort text
37  puts -nonewline stderr .
38}
39
40timedRun commit 1 mk::file commit db
41puts stderr "  [mk::view size db.words] rows, [file size _large.mk] b"
42
43for {set i 0} {$i < 3} {incr i} {
44  puts " $i: [mk::get db.words!$i]"
45}
46
47mk::file close db
48
49puts [clock format [clock seconds]]
50
51puts ""
52parray stats
53puts ""
54puts [clock format [clock seconds]]
55