Tcl upvar性能改进与直接通过
这与Tcl 8.5有关 假设我有一本很大的字典。 从性能的角度(内存占用等),假设我不修改字典,upvar是否应该在内存方面提供巨大的性能改进?我使用的是一个EDA工具,它有TCL外壳,但供应商禁用了TCL内存命令。我知道Tcl可以在引擎盖下共享字符串以实现性能。。。同一个字典可以传递多个嵌套的进程调用。Tcl upvar性能改进与直接通过,tcl,proc,upvar,Tcl,Proc,Upvar,这与Tcl 8.5有关 假设我有一本很大的字典。 从性能的角度(内存占用等),假设我不修改字典,upvar是否应该在内存方面提供巨大的性能改进?我使用的是一个EDA工具,它有TCL外壳,但供应商禁用了TCL内存命令。我知道Tcl可以在引擎盖下共享字符串以实现性能。。。同一个字典可以传递多个嵌套的进程调用。 谢谢。我可以想象,在写字典之前,字典是不会被复制的,所以如果没有人写,你应该没事。如果您想绝对确定,请使用全局搜索 proc myproc {} { global mydictio
谢谢。我可以想象,在写字典之前,字典是不会被复制的,所以如果没有人写,你应该没事。如果您想绝对确定,请使用全局搜索
proc myproc {} {
global mydictionary
}
只要不修改字典,它就不会提供太多明显的性能差异或内存消耗差异
Tcl通过不可变引用传递值,并在您写入更新时复制这些值(如果它们是共享的,例如,在全局变量和局部变量之间)(过程形式参数是局部变量)。如果你从不改变任何东西,你将使用一个共享的参考,一切都会很快。如果确实需要更改某些内容,则应使用upvar
或global
(或更奇特的变体之一)为调用者的/全局变量创建局部变量别名,并通过该别名进行更改,因为这是最快的。但这只是一个问题,如果你要改变的价值