Nar*_*rek 7 time timestamp tcl proc-object
假设我有一个proc,proc包含几个语句和函数调用.我怎么知道这个函数到目前为止花了多少时间?
Tro*_*ame 13
一个非常粗略的例子是:
set TIME_start [clock clicks -milliseconds]
...do something...
set TIME_taken [expr [clock clicks -milliseconds] - $TIME_start]
Run Code Online (Sandbox Code Playgroud)
使用time proc,您可以执行以下操作:
% set tt [time {set x [expr 23 * 34]}]
38 microseconds per iteration
Run Code Online (Sandbox Code Playgroud)
要测量某些代码所花费的时间,您可以使用time或clock。
该time命令将运行它的脚本参数并返回脚本所用时间的描述,以毫秒为单位(加上一些描述性文本,用 切断是微不足道的lindex)。如果你真的在做性能分析工作,你可以提供一个可选的 count 参数,使脚本重复运行,但对于一般监控,你可以忽略它。
该clock命令可让您获得各种时间戳(以及对时间进行格式化、解析和算术)。最粗略的是 with clock seconds,它返回自 Unix 纪元开始以来的时间量(以民用时间计算的秒数;这就是你想要的,除非你在做一些专门的事情)。如果您需要更多详细信息,您应该使用clock milliseconds或clock microseconds。还有clock clicks,但通常没有定义计数的单位(除非您传递-millisecondsor-microseconds选项)。您可以将时间戳转换为对您有用的东西。
如果您在 Tcl 8.4(或之前!)上计时,那么您只能使用time, clock secondsor clock clicks(甚至没有该-microseconds选项;在 8.4 中没有公开的微秒分辨率计时器)。在这种情况下,您应该考虑升级到 8.5,因为它通常更快。快点好!(如果您使用的是 8.4 之前的版本,请务必升级,因为您在支持方面远远落后。)