http://www.tcl.tk/man/tcl8.5/TclCmd/time.htm
Executes script and reports how long it takes per iteration (if iterations is absent, only one iteration is used). From 8.5, the report has sub-microsecond resolution (with accuracy depending on the OS's available timers).
Does anyone have some examples of using Tcl's time command? time executes script one time, or optionally, iterations times, time {myCommand $arg1 $arg2} 1000
time {myCommand $arg1 $arg2} 1000
will run the specified command, with substitutions performed, 1000 times, and finally return a list like this:
The higher you give the factor, the more precise the measurement will be, but of course take proportional time - so best start with small values, and increase until it feels too slow.
See How to measure Performance for additional info - but no obvious examples. More iterations increase the precision of the returned value, at the cost of
Also another use of the word time is as a network protocol for the transmission of time data - see RFC868 [L1 ] NTP is a more sophisticated protocol, but the time protocol does a simple job simply.
In yet another different use of the word time, LV asks "Has anyone written a time chooser similar to the date chooser widgets written elsewhere on the Wiki?" Larry refers to A little date chooser and An i15d date chooser. You can measure the runtime of a lengthy script with the following pattern: You might like to check out: timeentry and timefield.
set t0 [clock clicks -millisec] set t0 [clock clicks -millisec] ... ... puts stderr "[expr ([clock clicks -millisec]-$t0)/1000.] sec" ;# RS [kbk], Tcl's own wizard of speed and time, has done all the work to ensure ---- Even when you're not interested in the timing, you can use [time] as a simple control structure for loops: proc measure args { time {puts Hello} 5 Use it like this:
for {set i 0} {$i<5} {incr i} {puts Hello}
for {set i 0} {$i<5} {incr i} {puts Hello}
(MS voip in the Tcl chatroom 2005-03-03, brought here by RS)
LV Sometimes users ask how to get a tcl program's time in terms of real/user/system, similar to how they would use the ksh built in time command.
"time has more looping overhead than a script version! See below for proof." "[time] has more looping overhead than a script version! See below for proof."
proc f {} {} proc a {} { set n 100000 puts [time f $n] set c $n incr c set start [clock microseconds] while {[incr c -1]} { f } set end [clock microseconds] puts "[expr {($end - $start)/double($n)}] microseconds per iteration" } a
On my machine (WinXP, Tcl 8.6b1.2), this produces the following times:
3.78325 microseconds per iteration 1.62831 microseconds per iteration
f is run 100,000 times, both by time and by while/incr. Strangely enough, it takes time more than twice as long as while to do this. That makes no sense. Maybe time is recompiling the script f each time. But, how long can it take to compile a script that's only one character long??? [f] is run 100,000 times, both by [time] and by [while]/[incr]]. Strangely enough, it takes [time] more than twice as long as [while] to do this. That makes no sense. Maybe [time] is recompiling the script "f" each time. But, how long can it take to compile a script that's only one character long???