Вы можете попробовать создать статическую функцию для удаления. В предыдущих приложениях я обнаружил, что запрос большого дерева объектов для выполнения задачи может быть значительно медленнее, чем выполнение независимой функции над деревом. Статическая функция по сути глобальная, поэтому рекурсивный вызов точно знает, куда идти. Использование рекурсивного «метода» требует просмотра функции через каждый объект, что может добавить дополнительные издержки, особенно для таких операций, не связанных с кэшем. В том же духе вы, вероятно, получите лучшую производительность, если нарушите интерфейс, чтобы избежать вызова getNextSibling () для каждого объекта и полностью сохранить поток программ в одной глобальной рекурсивной функции.
Это не сама рекурсия, а то, что ваш конвейер инструкций продолжает останавливаться при доступе к данным, когда вы проходите через это дерево.