1


I have written a telnet script to remote control a cisco switch, and it takes me about 2-3 minitus to get start, even though i write a short script with a single proc, it also take 2-3 minutes to start. The proc is as below.

    proc test_proc {} {
        puts "123"
    }
    test_proc
Is anybody who has faced this noisy problem?
Looking forward your helps...

4

2 回答 2

1

计时脚本

要计算执行某段 Tcl 代码需要多长时间,请使用该time命令。它的第一个参数是要测量的脚本。(它还需要一个可选的第二个参数,即要使用的迭代次数;它默认为 1,但更多的迭代次数对于测量快速运行的事物可能很有用。)

proc test_proc {} {
    puts "123"
}
puts [time {
    test_proc
}]
# I got "48 microseconds per iteration" when I tried it; YMMV...

请注意,测量过程定义没有什么意义(除非您对其proc自身的行为非常感兴趣,但这相当书呆子)。

还有一个名为 的 Unix 系统命令time,它的工作方式类似(以概念方式),但测量程序运行的时间。它的输出在系统之间可能会有很大差异;毕竟它真的是为了人类可读的。

优化解释器启动时间

更令人担忧的是一个简单的脚本需要多长时间才能启动。2-3 分钟是计算术语的绝对年龄。您运行的机器是否内存不足?(大量的分页会大大降低程序速度。)或者您可能将所有库安装在一个奇怪的位置(/usr/lib由于目录结构的大小,当安装它的库时,Tcl 的包加载对问题特别敏感)。还有一些 Tcl 版本(尽管没有当前版本)在文件名解析和缓存中存在严重错误,这些错误往往会在启动时造成巨大的性能损失;您使用的是什么确切版本的 Tcl(以及 Expect)?使用命令获取确切的 Tcl 版本info patchlevel(tcl version仅从 Tcl 8.5 开始具有足够的精度)。

于 2012-09-06T19:33:54.820 回答
0

我意识到这是旧的,但我在寻找答案时偶然发现,所以我想我会在这里发布这个,以便下一个偶然发现它。

建议的时间函数确实有效,但不适用于完整的脚本,仅适用于函数。

我找到了一种使用毫秒时钟时间的方法,我用它来测量运行时间(秒数会不准确)

set start [clock clicks -milliseconds]

# all your code

set end [clock clicks -milliseconds]
set runtime [expr {$end - $start}]
puts "Runtime ${runtime}ms"
于 2017-12-11T08:05:56.150 回答