【问题标题】:tcl time taken when many procs are loaded加载许多 procs 所花费的 tcl 时间
【发布时间】:2018-03-06 05:17:47
【问题描述】:

以下 2 个场景之间是否存在性能(所用时间)差异。

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

【问题讨论】:

    标签: performance time tcl proc


    【解决方案1】:

    一个程序的成本是由于:

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

    我建议不要过分担心程序本身的效率(与您放入其中的代码的效率相反),而是以使其清晰易于理解。是的,如果您发现了瓶颈(例如 C 代码的目标位),您可以采取一些措施来大大加快它们的速度,但实际的过程总数很少会成为问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-12
      • 1970-01-01
      • 2015-11-17
      • 2018-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多