我目前正在处理的项目有很多被序列化的对象,以便获得现有对象的深层副本。这工作正常,直到我们在运行时有多个调用,在某些情况下,我们在组件之间有 100、200 甚至 1000 个调用,这就是我们遇到性能问题的地方。
复制这些对象被克隆的历史原因是,在不同功能下处理相同对象的两个不同组件不应相互更改,例如 Swing UI 中的更改不应更改后端中的对象值,直到按下保存或同步按钮。
我们有相当大的代码库,我想如果我基于反射编写克隆,它会比序列化更快,但由于我们复杂的对象层次结构或其他原因,这种方法甚至更慢。
我也尝试过使用 CloneUtils (sourceforge project),它也比较慢(我们根本没有使用 Hibernate)。Spring BeanUtils 不是一个选项(我从文档中假设它只使用 bean,即自省,如果我使用它,如果使用非标准访问器公开任何字段,我们将无法复制这些)。
有谁知道,提高性能,同时仍在处理不同的副本。如果我们提供自己的复制方法而不是序列化,我们有一个选项可以加快速度,但是每次更新这些方法都有缺点,如果我们忘记了我们可能会失去功能。