这与Tcl 8.5有关 说我有一本非常大的字典。 从性能的角度(内存占用等),假设我不修改字典,upvar应该在内存方面提供巨大的性能提升吗?我正在使用具有TCL shell的EDA工具,但供应商禁用了TCL内存命令。我知道Tcl可以共享字符串以获得性能......相同的字典可以通过几个嵌套的过程'调用。 感谢。
答案 0 :(得分:1)
只要您不修改字典,它就不会提供明显的性能差异或内存消耗差异。
Tcl通过不可变引用传递值,如果它们被共享(例如,在全局变量和局部变量之间)(过程形式参数是局部变量),则在向它们写入更新时复制它们。如果你从未改变任何东西,那么你将使用共享参考,一切都会很快。如果您确实需要更改某些内容,则应使用upvar
或global
(或更奇特的变体之一)为调用者/全局变量创建局部变量别名并通过那是,这是最快的。但如果您要改变价值,这只是一个问题。
答案 1 :(得分:0)
我认为,在字典之下,字典不会被复制,直到它被写入,所以如果没有写,那么你应该没问题。如果你想绝对确定,请使用全局。
proc myproc {} {
global mydictionary
}