Есть много библиотек, которые выполняют эту операцию. Вы можете увидеть результаты теста здесь :
Короче говоря, если вам нужна производительность, делайте это вручную, это действительно быстрее. Кроме того, некоторые библиотеки позволяют выполнять клонирование shallow (кстати, это хороший вариант для вас), что быстрее. И не используйте BinaryFormatter
, если вам нужна какая-либо производительность.
Кроме того, @frakon упоминает, что деревья выражений имеют ту же скорость, что и IL Emit, это немного некорректно. Дерево выражений немного медленнее, но его можно использовать в частично доверенном приложении.
Ручной 13мс
DeepCloner (IL Emit) 167 мс
DeepCloner (выражения) 267мс
CloneExtensions (выражения) 560ms
NClone 901ms
Clone.Behave! 8551ms
GeorgeCloney 1996ms
Nuclex. Клонирование не доступно (разбился)
FastDeepCloner 1882мс
Бинарный формат 15000мс