程序的费用是由于:
- 致电
proc
时定义。通常很快;它只需要更新一些哈希表并分配一些内存来存储正文的字符串表示。
- 将其编译为字节码。不是超快,但仍然不是太糟糕,因为编译器写得相当快,而且Tcl非常积极地缓存字节码。通常在您第一次运行该过程时发生(因为内部调用是“获取字节码,如果您需要首先编译源代码”)。
- 输入(并离开)程序的堆栈帧。更多内存分配和初始化,但使用特殊的内存分配器来加快速度。这也是程序的参数存储在每个形式参数的局部变量中的地方。
- 实际运行字节码。取决于你在程序中写的内容。
- (不是特定于程序的。)查询命令也需要付出代价。 Tcl做了一些缓存,试图尽可能降低这个成本,甚至不考虑字节码编译过程。
醇>
我建议不要过多担心程序本身的效率(而不是放在它们中的代码的效率),而是将代码划分为 clear 和易于理解尽可能。是的,如果您遇到已识别的瓶颈(例如C代码的目标位),您可以采取一些措施来大大加快速度,但实际的程序总数很少是一个问题。