解决方案克隆性能提示
Solution Cloning Performance Tips
我们目前正在努力提高我们在 OptaPlanner 中实现的规划问题的性能。我们的模型有大约 45,000 个链接变量,在对应用程序进行分析后,主要瓶颈似乎在于克隆。 CPU 运行 时间的大约 90% 被 FieldAccessingSolutionCloner
方法调用消耗。
我们已经尝试通过减少 PlanningEntities 中的映射和集合的数量、尽可能将字段更改为基元来使我们的对象模型更轻量级,但是根据您自己的 OptaPlanner 经验,您对如何加快速度有什么建议克隆性能?
您是否尝试过编写自定义克隆程序?请参阅文档。
默认的需要依赖反射,所以比较慢
此外,域模型的结构 会影响您需要克隆的程度(无论您是否自定义):
如果您删除解决方案和规划实体 类,您的其他域 类 是否仍然可以编译?
如果是,则克隆是最小的。如果不是,那就不是。
我们目前正在努力提高我们在 OptaPlanner 中实现的规划问题的性能。我们的模型有大约 45,000 个链接变量,在对应用程序进行分析后,主要瓶颈似乎在于克隆。 CPU 运行 时间的大约 90% 被 FieldAccessingSolutionCloner
方法调用消耗。
我们已经尝试通过减少 PlanningEntities 中的映射和集合的数量、尽可能将字段更改为基元来使我们的对象模型更轻量级,但是根据您自己的 OptaPlanner 经验,您对如何加快速度有什么建议克隆性能?
您是否尝试过编写自定义克隆程序?请参阅文档。 默认的需要依赖反射,所以比较慢
此外,域模型的结构 会影响您需要克隆的程度(无论您是否自定义): 如果您删除解决方案和规划实体 类,您的其他域 类 是否仍然可以编译? 如果是,则克隆是最小的。如果不是,那就不是。