tcl加载许多过程所花费的时间

时间:2018-03-06 05:17:48

标签: performance time tcl proc

以下两种情况之间是否有任何表现(时间)差异。

  1. 在shell中只加载了一个TCL proc,并且您正在执行该proc。
  2. 加载了1000个不同的proc,以便访问与case1相同的proc。

1 个答案:

答案 0 :(得分:1)

程序的费用是由于:

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