1

这与 Tcl 8.5 有关假设我有一本非常大的字典。从性能的角度来看(内存占用等),假设我不修改字典,upvar 是否应该在内存方面提供巨大的性能改进?我正在使用具有 TCL shell 的 EDA 工具,但供应商禁用了 TCL 内存命令。我知道 Tcl 可以在后台共享字符串以提高性能...同一个字典可以传递多个嵌套的 procs 调用。谢谢。

4

2 回答 2

1

只要您不修改字典,它就不会提供太多明显的性能差异或内存消耗差异。

Tcl 通过不可变引用传递值,如果它们是共享的,例如,在全局变量和局部变量之间(过程形式参数是局部变量),则在您向它们写入更新时复制它们。如果您从不更改任何内容,您将使用共享参考,一切都会很快。如果您确实需要更改某些内容,您应该使用upvaror global(或其中一种更奇特的变体)为调用者/全局变量创建一个局部变量别名并通过它进行更改,因为这是最快的。但这只是一个问题,如果你要改变价值。

于 2015-09-23T05:37:06.633 回答
0

我想在引擎盖下,字典在被写入之前不会被复制,所以如果没有写入,那么你应该没问题。如果您想绝对确定,请使用全局变量。

  proc myproc {} {
    global mydictionary
  }
于 2015-09-22T20:56:48.520 回答