См Tcl 8.4 ниже код и вывод оболочки ниже: (нужно мета- кодирование):TCL кажется медленнее, чем набор, при получении значения переменной из переменной с именем переменной
% set k a
% set m k
% puts [set $m ]
a
% puts [subst $$m]
a
Итак, это что set $m
и subst $$m
имеют одинаковую функциональность. Тем не менее, во время выполнения (в простом TestCase) довольно сильно отличается (см продолжение результатов оболочки ниже:
% time { set $m } 1000000
0.256435 microseconds per iteration
% time { subst $$m } 1000000
0.627714 microseconds per iteration
Как можно видеть, установлен в ~ 2,5 быстрее, чем SUBST 2 вопроса:., Чтобы спросить: 1. Почему?
2. Я видел, что это ~ 3,6 быстрее в Tcl 8.5. можно ли ожидать, что это будет оставаться так, в будущих версиях?
Благодаря
и будем держать это в перспективе: мы говорим меньше одной микросекунды. –
Правда. Но что произойдет, если вам придется это делать сотни миллионов раз? – user1134991
Ну, половина микросекунды за итерацию раз 500 миллионов итераций составляет около 4 минут. Конечно, стоит посмотреть, но, вероятно, не ваше самое узкое место. –