Вызов Tcl в цикле foreach - эффективность - PullRequest
0 голосов
/ 29 октября 2018

В моем коде Tcl у меня в настоящее время есть процесс, который возвращает список Tcl. Я вызываю этот процесс в цикле foreach, как показано

foreach a [get_objects] {
    # ...
}

Насколько это эффективно по отношению к Tcl? Следующий стиль лучше?

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

К вашему сведению, длина списка довольно велика.

1 Ответ

0 голосов
/ 30 октября 2018

Я считаю, что первый медленнее. Tcl не имеет компилятора, из-за этого программа просто «течет» без каких-либо разумных выделений памяти. Как работает интерпретация, он не может удалить $ my_list, потому что он не знает следующую строку кода, возможно, будет использована переменная. Вероятно, не зная, как интерпретатор Tcl, первый вариант освободит память, выделенную для [get_objects]. Благодаря этому действию это займет больше времени.

...