我已经写了一个telnet脚本来远程控制一个cisco开关,它需要大约2-3个小时才能启动,即使我用单个proc编写一个短脚本,它也需要2-3分钟才能启动。触发如下
proc test_proc {} { puts "123" } test_proc是否有人遇到过这个嘈杂的问题? 期待你的帮助......
答案 0 :(得分: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
本身的行为非常感兴趣,但那是相当讨厌的。)
还有一个名为time
的Unix系统命令,其工作方式类似(以概念方式),而是测量程序运行的时间。它的输出在系统之间变化很大;毕竟它真的是人类可读的。
更令人担忧的是,一个微不足道的剧本需要多长时间才能开始;在计算方面,2-3分钟是绝对年龄。您运行的机器是否内存不足? (繁重的分页可以减慢程序的速度。)或者你可能将所有的库安装在一个奇怪的位置(由于该目录的大小,Tcl的软件包加载对于/usr/lib
中的库安装时的问题特别敏感结构体)。还有一些版本的Tcl(虽然没有当前的)在文件名解析和缓存方面存在严重错误,这往往会在启动时导致巨大的性能损失;您使用的是Tcl(以及Expect)的确切版本?使用info patchlevel
命令获取精确的Tcl版本(tcl version
仅具有从Tcl 8.5开始的足够精度。)
答案 1 :(得分:0)
我意识到这已经老了,但我在寻找答案时偶然发现了,所以我想我会在这里发布这个,以便下一个绊倒它。
建议的时间函数确实有效,但不适用于完整的脚本,仅适用于函数。
我找到了一种使用毫秒的时钟时间的方法,用于测量运行时间(秒将是不准确的)
X509Certificate2 Verify