OptaPlanner v8.8.0大规模Benchmarker报告显示异常及空指针问题咨询
回答
图表图例占满绘图区问题
8.8.0.Final版本的基准测试报告默认生成静态PNG图表,没有公开的配置项直接调整边距、图例布局,你可以按两种方式处理:
- 自定义FreeMarker模板:OptaPlanner基准报告的生成逻辑基于FreeMarker模板,你可以把
optaplanner-benchmark依赖包内org/optaplanner/benchmark/impl/report路径下的模板文件拷贝到你项目的resources对应目录,修改图表生成的相关参数:比如调高图表整体高度,把图例位置从侧边改到图表底部,或者给图例增加滚动显示逻辑,调整后重新运行基准测试生成报告即可。 - 直接修改已生成的报告:如果不想重新跑测试,直接打开输出的HTML报告,修改对应的CSS样式,给绘图区域增加额外边距,或者直接删除多余的图例条目,只保留你需要对比的配置对应的图例。
BenchmarkAggregatorFrame空指针异常问题
堆栈里的NPE是因为部分子测试用例(subSingle)运行异常没有生成有效得分,比较器在排序时读取空得分对象触发的,你可以用以下方法解决:
- 先排查测试运行日志,确认是否有部分子用例执行失败、提前终止,先修复测试用例本身的问题,保证所有subSingle都能输出有效得分后再使用聚合工具。
- 如果不想排查测试用例,可以自己写一个自定义的排名比较器,继承
ScoreSubSingleBenchmarkRankingComparator,重写compare方法,对空得分的情况做兼容处理,把空得分的条目统一排到最后,再在基准测试配置里指定使用你自定义的比较器即可。 - 直接升级OptaPlanner版本到8.13.0.Final及以上,官方在后续版本已经修复了这个空指针问题,在比较器里提前做了空值判断。
内容的提问来源于stack exchange,提问作者Ryan Moser
相关产品推荐
相关产品推荐

