Да, ему нужно будет пройти весь граф объекта. Честно говоря, я не могу думать, как могут быть какие-либо оптимизации, но это не требует особых усилий для каждого узла. Я подозреваю, что большую часть времени, вероятно, будет потрачено на ожидание в памяти, поскольку очевидно, что он будет прожигать кеш. Конечно, к тому времени, когда связанный список заканчивается в gen2 (и если вы выделяете миллионы узлов, большая часть будет в gen2 довольно быстро), он будет делать это очень редко.
Если это наиболее приемлемая структура данных для вашего приложения, я бы использовал ее на данный момент, но отслеживаю снижение производительности при сборке мусора с помощью Performance Monitor и т. Д. Если это окажется проблемой, вы можете рассмотреть альтернативные стратегии.