All other

Bavet – A faster score engine for OptaPlanner

    Blog post image      

Drools is an extremely fast rule engine. Under the hood, OptaPlanner has used Drools as a score engine for ages. Today, we’re announcing a faster, lightweight alternative: Bavet. Bavet is a feature of OptaPlanner. It is not a rule engine. It is a pure, single-purpose, incremental score calculation implementation of the ConstraintStreams API. Bavet isRead more →

How much faster is Java 17?

    Blog post image      

  Java 17 (released yesterday) comes with many new features and enhancements. However, most of those require code changes to benefit from. Expect for performance. Simply switch your JDK installation and you get a free performance boost. But how much? Is it worth it? Let’s find out by comparing the benchmarks of JDK 17, JDKRead more →

OptaPlanner Week 2020 recordings

    Blog post image      

It’s a wrap! Last week, during the online OptaPlanner Week event, we had 10 talks by 13 speakers across 3 days with – per day – up to 250+ live attendees and 1300+ viewers afterwards. We’ve split up the talks into separate videos for your convenience, watch them below. Big thanks to all speakers forRead more →

Constraint Streams – Modern Java constraints without the Drools Rule Language

    Blog post image      

Traditionally, to scale out with OptaPlanner, you had to learn DRL. No more. With the new Constraints Streams API, inspired by Java 8 Streams and SQL, you can now write your constraints in Java (or Kotlin or Scala) and still benefit from incremental calculation. Underneath, Constraints Streams (CS) still use the powerful Drools engine. WeRead more →

Mechanic scheduling (part 1) – Can OptaPlanner keep up with a keynote audience of thousands?

    Blog post image      

This year, my team and I participated in the Red Hat Summit keynote. In front of 7000 people, we demonstrated real-time scheduling, reacting on input coming from the audience’s smartphones. In the past 2 months, we created this application together with the other middleware teams and under the excellent guidance of Burr Sutter. It integratesRead more →

A giant leap forward with multithreaded incremental solving

    Blog post image      

OptaPlanner finally supports multithreaded incremental solving. The speedup is spectacular. Even with just a few CPU cores, it triples the score calculation speed. See the results below. To activate it, a single extra line in the configuration suffices. The original feature request stems from 2007. Throughout the years, step by step, we diligently prepared theRead more →

Java Reflection, but much faster

    Blog post image      

What is the fastest way to read a getter from a Java class without knowing the class at compilation time? Java frameworks often do this. A lot. And it can directly influence their performance. So let’s benchmark different approaches, such as reflection, method handles and code generation. The use case Presume we have a simpleRead more →