【发布时间】:2011-10-30 17:00:13
【问题描述】:
我正在寻求一种以高性能方式深度克隆对象图的方法。我将让多个线程非常快速地克隆图形,以便它们可以处理某些状态并在结果不感兴趣时丢弃结果,然后返回原始状态再试一次。
我目前正在通过二进制序列化使用深度克隆,虽然它可以工作,但速度并不快。我见过像 protobuf 这样的其他库,但是我的对象图中的类可以在外部程序集中定义,从主程序集中的类继承,并且如果可能的话,不希望在这些消费程序集中增加任何复杂性。
我遇到的一件有趣的事情是使用automatically generated IL 进行克隆。好像还没有完成,我已经发布了,看看作者是否做了更多的工作,但我猜没有。有没有其他人开发或看到过一种更完整的通过 IL 进行深度克隆的方法?还是其他更快的方法?
【问题讨论】:
-
编辑:糟糕,我阅读失败。
-
@Tejs:如果您阅读了问题,他正在使用它
-
你对图结构有什么特别的了解吗?例如,分支可以引用其他分支吗?你能假设某种平衡的、正常的结构结构(例如:二叉树)吗?
-
@Paul:完整的图表将有跨分支的引用,尽管我可以很容易地隔离这一点。那时我相信任何交叉引用都可以被忽略和复制,因为它们没有任何状态。我可能会尝试制作一个示例图并上传它。