tcl加载许多过程时所用的时间

问题描述 投票:0回答:1

是否存在以下两种情景之间的任何表现(时间)差异。

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

程序的费用是由于:

  1. 当你调用proc时定义它。通常很快;它只需更新一些哈希表并分配一些内存来存储正文的字符串表示。
  2. 将其编译为字节码。不是超级快,但仍然没有太糟糕,因为编译器写得相当快,而且Tcl非常积极地缓存字节码。通常在您第一次运行该过程时发生(因为有一个内部调用“获取字节码,如果您需要首先编译源代码”)。
  3. 输入(并离开)过程的堆栈帧。更多内存分配和初始化,但使用特殊的内存分配器来加快速度。这也是程序的参数存储到每个形式参数的局部变量的地方。
  4. 实际上运行字节码。取决于你在程序中写的东西真的。
  5. (不是特定于程序的。)查找命令也需要付出代价。 Tcl做了一些缓存,试图尽可能降低这个成本,甚至不考虑字节码编译过程。

我建议不要过多担心程序本身的效率(而不是放在它们中的代码的效率),而是以尽可能清晰易懂的方式对代码进行分区。是的,如果你有一个已确定的瓶颈(例如C代码的目标位),你可以采取一些措施来大大加快它们的速度,但实际的程序总数很少是一个问题。

© www.soinside.com 2019 - 2024. All rights reserved.