Posted to tcl by mjanssen at Mon Oct 22 19:23:53 GMT 2007view pretty

# static non-threaded build: ./configure --disable-shared --disable-threads --disable-symbols CFLAGS="-march=i686"
mjanssen@juno:~/test$ tclsh8.5 test.tcl test.dat > /dev/null
15882535
16545939
15709562
15764823
16055450
16917391
15800930
16009375
16300071
16056347
mean: 16104242.3
sdev: 383037.6532669109

# shared, threaded build: ./configure
mjanssen@juno:~/test$ tclsh8.5 test.tcl test.dat > /dev/null
50255500
48259472
46758870
44438737
45814076
45172940
44581582
46459528
44839097
44579642
mean: 46115944.4
sdev: 1897374.5886940137

# script
fconfigure stdout -buffering full

proc my_grep {re file} {
        set f [open $file r]
        fconfigure $f -encoding ascii -translation lf
        while {[gets $f buf] >= 0} {
                if {[regexp -- $re $buf]} {puts $buf}
        }
        close $f
}
set re {^$}
fconfigure stdout -encoding binary -translation binary
foreach file $argv {
        foreach i {0 1 2 3 4 5 6 7 8 9} {
                lappend res [lindex [time {my_grep $re $file} 1] 0]
                puts stderr [lindex $res end]
        }
}
puts stderr "mean: [::math::statistics::mean $res]"
puts stderr "sdev: [::math::statistics::stdev $res]"