tcl加载许多过程时所用的时间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tcl加载许多过程时所用的时间相关的知识,希望对你有一定的参考价值。
是否存在以下两种情景之间的任何表现(时间)差异。
- 在shell中只加载了一个TCL proc,并且您正在执行该proc。
- 加载了1000个不同的proc,以便访问与case1相同的proc。
答案
程序的费用是由于:
- 当你调用
proc
时定义它。通常很快;它只需更新一些哈希表并分配一些内存来存储正文的字符串表示。 - 将其编译为字节码。不是超级快,但仍然没有太糟糕,因为编译器写得相当快,而且Tcl非常积极地缓存字节码。通常在您第一次运行该过程时发生(因为有一个内部调用“获取字节码,如果您需要首先编译源代码”)。
- 输入(并离开)过程的堆栈帧。更多内存分配和初始化,但使用特殊的内存分配器来加快速度。这也是程序的参数存储到每个形式参数的局部变量的地方。
- 实际上运行字节码。取决于你在程序中写的东西真的。
- (不是特定于程序的。)查找命令也需要付出代价。 Tcl做了一些缓存,试图尽可能降低这个成本,甚至不考虑字节码编译过程。
我建议不要过多担心程序本身的效率(而不是放在它们中的代码的效率),而是以尽可能清晰易懂的方式对代码进行分区。是的,如果你有一个已确定的瓶颈(例如C代码的目标位),你可以采取一些措施来大大加快它们的速度,但实际的程序总数很少是一个问题。
以上是关于tcl加载许多过程时所用的时间的主要内容,如果未能解决你的问题,请参考以下文章