Ree*_*sey 13
手动深度复制您的值的第一个选项将是迄今为止最高效的.
反射将引入相当多的开销,因为它(相对)访问数据很慢.
序列化增加了巨大的成本,因为它将数据序列化为临时结构,然后反转要设置的进程.这又是非常缓慢的.
选项2或3的唯一优势是它可能更容易实现,并且可以跨多种类型重用.第一个选项必须是每种类型的手写,但速度要快得多(内存使用效率也高于选项3).
fra*_*kon 10
我用三种方法和表达式树方法进行了比较.
对于大量对象,反射快5倍,手动代码和表达式树比序列化快20倍.因此,性能最佳的是手动代码和表达式树.
链接到使用过的克隆代码(2.-4.用作扩展方法):
订购您列出的可能解决方案是正确的性能订单.
编写代码以手动克隆每个属性值时,您将获得最佳性能.
反射将具有与手动克隆类似但稍慢的结果.
序列化是最糟糕的情况.但最快实施.
所以这里列出了所有可能的克隆方法:
我个人会选择" 克隆与IL ",因为它比反射快一点,你不必手动克隆一切.