【问题标题】:global vs non global Tcl proc search, performance pro's and con's全局与非全局 Tcl proc 搜索,性能优缺点
【发布时间】:2016-02-10 13:58:23
【问题描述】:

假设我在 Tcl 中有一个 proc 名称 foo,在主命名空间中。
然后我创建一个命名空间 bar,并在其中调用 proc foo。现在,由于没有 foo::bar proc,所以将调用全局的。但是,我也可以通过调用 ::foo 显式调用全局 foo。
这两个选项是否应该有任何性能优势?这不是经验问题,而是更多地了解 proc 查找表应该如何工作

【问题讨论】:

    标签: performance tcl proc


    【解决方案1】:

    Tcl 对这些类型的查找进行了相当广泛的缓存,因此抽象地准确预测性能发生了什么是很尴尬的。相反,最好是测试!这是在我的笔记本电脑上使用 Tcl 8.6 完成的……

    % proc foo {} {expr 123}
    % time { foo } 100000
    0.36416123 microseconds per iteration
    % namespace eval bar { time { foo } 100000 }
    0.36913464 microseconds per iteration
    % namespace eval bar { time { ::foo } 100000 }
    0.36198978000000004 microseconds per iteration
    

    简而言之,在这个特定的测试中,我们看到呼叫之间在速度方面的差异在噪音方面有所下降;我相信上面的区别。

    我建议编写清晰的代码,除非你衡量一个问题,否则不要担心速度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-23
      • 1970-01-01
      • 2023-03-25
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多