首页 > 解决方案 > foreach 循环中的 Tcl proc 调用 - 效率

问题描述

在我的 Tcl 代码中,我目前有一个返回 Tcl 列表的 proc。我在 foreach 循环中调用这个过程,如图所示

foreach a [get_objects] {
    # ...
}

相对于 Tcl,它的效率如何?下面的风格更好吗?

set my_list [get_objects]
foreach a $my_list {
    # ...
}

仅供参考,列表的长度非常大。

标签: listforeachreturntclproc

解决方案


我相信第一个比较慢。Tcl 没有编译器,因此程序只是“流动”而没有任何智能内存分配。由于解释的作品,它不能删除 $my_list 因为它不知道下一个代码行,也许该变量将被使用。可能在不知道 Tcl 解释器的情况下,第一个选项将释放为 [get_objects] 分配的内存。由于此操作,它将消耗更多时间。


推荐阅读