【发布时间】:2018-10-29 07:53:43
【问题描述】:
在我的 Tcl 代码中,我目前有一个返回 Tcl 列表的 proc。 我在 foreach 循环中调用这个 proc,如图所示
foreach a [get_objects] {
# ...
}
相对于 Tcl,它的效率如何? 下面的样式更好吗?
set my_list [get_objects]
foreach a $my_list {
# ...
}
仅供参考,列表的长度相当大。
【问题讨论】:
-
从技术上讲,您不是在 in 中调用列表生成过程,而是在 foreach 循环的 ahead 中调用。在这两种情况下,列表只会有一个副本而不是多个副本,并且每次迭代都只会在一个列表元素上工作。你觉得有什么具体的问题吗?在这种形状中(除了一项额外的任务),我希望 sn-ps 的性能非常相似。
-
另请注意,在您的第二个 sn-p 中,它应该是
set my_list [get_objects] -
这是一个猜测:我认为在第一个 sn-p 中,用于列表的内存将在循环结束后被释放(或有资格清理),而第二个 sn-p由于引用它的变量,将不得不保留该内存(除非您随后取消设置 my_list)。
标签: list foreach return tcl proc