2015-04-01 2 views
0

Например, если у меня есть 1 миллион объектов фактов, проходя через набор правил, где порядок выполнения правил не имеет значения. Будет ли какая-то разница в производительности между:Возникает ли у Drools Salience влияние на производительность?

  1. Явными назначать различные значения Salience каждого правило
  2. Используйте значение заметности по умолчанию (0) или все правила с тем же значением Salience?

Просто для любопытства, потому что я только слышал, что последний работает лучше.

Я сделал несколько бенчмаркинга. Результат показывает, что подход с различной значимостью имеет некоторые накладные расходы и увеличивает общее время обработки (не так много), однако время, затрачиваемое на обработку объектов объекта, кажется одинаковым.

Не уверен, что это наблюдение соответствует базовой логике кода.

Я должен поблагодарить вас обоих за подробное объяснение.

ответ

0

Для Drools 6. Каждое соответствие правилу (также называемое активацией или созданием правила) для данного правила добавляется в двунаправленный связанный список. Стрельба по этому правилу - это вопрос повторения этого списка, в свою очередь, стрельба по каждому правилу.

Каждое правило для оценки помещается в BinaryHeapQueue, и правила выставляются поочередно, оцениваются, производится связанный список, а затем он повторяется, чтобы попытаться выстрелить.

Если существует большое количество совпадений правил для каждого правила, тогда стоимость очереди кучи не будет заметна. Если у вас мало правильных совпадений для каждого правила, но большое количество правил, вы, вероятно, увидите сравнение 10% (это предположение) или так накладные расходы.

1

Повестка дня, то есть список, содержащий все активизации правил, упорядочивается по значимости. Понятно, что сохранение связанного списка, упорядоченного по некоторому критерию, более дорогостоящее, чем неупорядоченное. Конечно, реализация пытается быть как можно более эффективной, см. Код org.drools.core.util.BinaryHeapQueue.

Использование различной важности для каждого правила было бы компонентом для наихудшего сценария. Другим может быть чередование вставок и стрельб, которые могут либо приводить к разным значениям значимости, либо создавать плохие или худшие сценарии.

Смежные вопросы