Uploaded image for project: 'OptaPlanner'
  1. OptaPlanner
  2. PLANNER-1382

Performance regression on move selectors caused by PLANNER-1286

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 7.17.0.Final
    • 7.16.0.Final
    • optaplanner-core
    • None
    • 2019 Week 02-04, 2018 Week 51-01
    • 2
    • NEW
    • NEW

      Changes made to LambdaBeanPropertyMemberAccessor [1] as a part of PLANNER-1286 caused a performance regression in Move Selector benchmarks:
      localsearch.cloudbalance.moveselector.CloudBalanceSwapMoveSelectorBenchmark.benchmark__CB_10000_30000 +9.54 %
      localsearch.projectjobscheduling.moveselector.ProjectJobSchedulingChangeMoveSelectorBenchmark.benchmark__B_9 +5.96 %
      localsearch.tsp.moveselector.TSPSwapMoveSelectorBenchmark.benchmark__USA_CA_2716 +8.59 %

      The performance drop is caused by the fact that originally monomorphic call site has been turned into megamorphic in order to provide implementations for each primitive data type (see the new @FunctionalInterfaces there). As a result, JVM cannot do inlining and branch prediction so effectively as before this change.

      [1] https://github.com/kiegroup/optaplanner/pull/444

              rsynek@redhat.com Radovan Synek (Inactive)
              rsynek@redhat.com Radovan Synek (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: