Updated 2018-08-24 14:51:56 by pooryorick

Created by CecilWesterhof.

When discussing the implementation of Split On Whitespace one of the factors was the performance. To make this easier I wrote the following proc:
proc doTime {command iterations tries {output True}} {
    if {![string is integer -strict $iterations] || \
            ![string is integer -strict $tries]} {
        error "iterations and tries should a integers ($iterations, $tries)"
    }
    if {($iterations < 1) || ($tries < 1)} {
        error "iterations and tries should be at least 1 ($iterations, $tries)"
    }
    set sigma 0

    for {set i 0} {$i < $tries} {incr i} {
        set   used [time $command $iterations]
        if {$output} {
            puts $used
        }
        set sigma [expr {$sigma + [lindex $used 0]}]
    }
    set average [expr {$sigma / $tries}]
    if {$output} {
        puts   [format "Average: %.2f" $average]
    }
    return $average
}

It expects the command to be timed, for example:
    "splitOnWhiteSpace {$currentStr} -1 -1 True".

It furthermore expects iterations and tries. Optionally you can set the output.

Personally I think that you will use it most often interactively, so default the output is shown, but it can be disabled. Then it gives only back the average of the timings.

As always: comments, tips, questions and requests are appreciated.