Version 15 of Time

Updated 2010-10-23 20:38:14 by dkf

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).

Description

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

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

for {set i 0} {$i<5} {incr i} {puts Hello}

 for {set i 0} {$i<5} {incr i} {puts Hello}

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.