Во время выполнения нет ничего, что могло бы замедлить выполнение кода в глубоком стеке, чем в неглубоком стеке вызовов.Для этого нет никаких оснований, потому что обычно выполнение кода не запускает обход стека.
Когда я обычно говорю, это означает, что есть несколько исключений:
- Безопасность / Доказательствапроверки обычно обходят стек вызовов для определения текущего контекста безопасности
- Бросание и перехват исключений, конечно (в любом случае вы не хотите делать это при обходе дерева, кроме его прерывания)
Необходимость реализации итеративного или рекурсивного обхода дерева не зависит от того, обеспечит ли среда выполнения .NET лучшую производительность в одном сценарии по сравнению с другим, но вы должны принять решение на основе Big-O (времени).и память), особенно если это для больших деревьев.Я не думаю, что мне нужно напоминать вам о возможности переполнения стека с помощью рекурсивного решения, учитывая, где мы находимся ... Хотя возможна оптимизация Tailcall.
После того, как вы выбрали самый быстрый обход дляВаше дерево и цель обхода В самом большом смысле вы можете начать беспокоиться об оптимизации своей реализации.