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