无锡高端网站建设,网站制作怎样盈利,浙江振升建设有限公司网站,海外免费虚拟主机drools dmn我们一直在寻求改善Drools DMN开源引擎的性能。 我们最近审查了DMN用例#xff0c;其中输入数据节点的实际输入总体有所不同。 这突出显示了引擎的次佳性能#xff0c;我们在最新版本中对此进行了改进。 我想分享我们的发现#xff01; 基准制定 当我们开始为此用… drools dmn 我们一直在寻求改善Drools DMN开源引擎的性能。 我们最近审查了DMN用例其中输入数据节点的实际输入总体有所不同。 这突出显示了引擎的次佳性能我们在最新版本中对此进行了改进。 我想分享我们的发现 基准制定 当我们开始为此用例运行一个支持基准测试时尤其是在调查具有稀疏填充的输入数据节点的大型DMN模型的场景时我们注意到了一些奇怪的结果当记录消息时火焰图数据突出显示了性能的严重下降这非常消耗与应用逻辑本身相比花费了大量时间。 该火焰图特别强调了堆栈跟踪合成由测井框架人为诱导消耗了大量时间。 在这种情况下纠正措施是调整日志记录配置以避免此问题。 具体来说我们禁用了日志记录框架的一项功能该功能在调试活动期间非常方便从而可以快速定位原始的调用类和方法不幸的是此功能的代价是合成堆栈跟踪该跟踪最初污染了基准测试结果。 从这里学到的教训请始终先检查非功能性需求是否真的掩盖了真正的问题 在继续更详细地研究用例之前这是必要且可行的步骤。 改善表现 继续并专注于DMN优化我们专门开发了一个通用性很强的基准同时也重点介绍了已提供给我们的用例。 该基准包含一个DMN模型其中包含许多要评估的决策节点500个。 另一个参数控制输入数据节点的稀疏性以进行评估 范围从值1填充所有输入到值2仅填充两个输入中的一个等等。 事实证明该特定基准是突出一些潜在改进的非常有用的工具。 将比较基准设置为Drools版本7.23.0。最终使用DROOLS-4204实现的第一个优化专注于在评估FEEL表达式的同时改善上下文处理并证明可提供约3倍的改进而使用DROOLS-4266进行的进一步优化则专注于特定决策表输入子句的用例表明在DROOLS-4204的基础上附加的〜2倍改进。 我们还在下图中收集了这些度量。 该图突出显示了当稀疏因子等于1时填充所有输入时的复合改进 这是一个非常重要的结果因为实际上它确实代表了原始用例中的主要 “快乐路径”场景。 换句话说与在相同的用例上运行相比我们实现了约6倍的改进 7.23.0。最终版 我在这里学到的教训是在可能的情况下始终努力进行此类复合改进因为它们确实可以彼此叠加以获得更大的效果 为了完整起见我们使用以下度量重复分析其稀疏因子等于2实际上每2个输入填充1个和50个实际上每50个输入填充1个并进行以下测量 结果表明对于等于2的稀疏因子优化也很重要但随着该因子的增加相关的改进并不明显-这是可以预期的因为决策节点评估对整体执行逻辑的影响现在变得不那么重要了。 为了完整起见还对包含多个规则行的单个决策表使用了另一个已经存在的基准进行分析 结果表明这些代码更改从整体上来看仍然可以提供相关的改进 虽然显然不相同幅度为原来使用-情况。 这是另一项重要检查以确保这些改进不适合特定用例。 结论 以Drools版本7.23.0.Final为基准以及包含DMN模型和许多待评估决策节点的参考基准我们实施了多项优化这些优化一旦组合在一起就可以使该特定项目的总速度提高约6倍用例 我希望这是一篇有趣的文章以强调要获得更好性能的一些方面 让我们知道您的想法和反馈。 您现在已经可以从Drools的最新版本中受益于这些Kie DMN开源引擎的改进 翻译自: https://www.javacodegeeks.com/2019/08/drools-dmn-performance-improvements.htmldrools dmn