<benchmarks delay="10" repetitions="10">

  <!-- Runtime -->

  <benchmark description="Create and dispose stateful sessions"
             warmups="2" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.StatefulSessionCreation">
    <arg>10000</arg>
  </benchmark>

  <benchmark description="Create stateless sessions"
             warmups="2" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.StatelessSessionCreation">
    <arg>1000000</arg>
  </benchmark>

  <benchmark description="Stateless session executing one rule on one object"
             warmups="20000" repetitions="10000" enabled="false"
             classname="org.drools.benchmark.benchmarks.SingleStatelessRule">
  </benchmark>

  <benchmark description="Insert 10K objects and retract them (no rules)"
             warmups="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.InsertAllAndRetract">
    <arg>10000</arg>
  </benchmark>

  <benchmark description="Insert 10K objects and retract them with a single pattern of empty constraints"
             warmups="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.InsertAllAndRetract">
    <arg>10000</arg>
    <arg>emptyConstraintRule.drl</arg>
  </benchmark>

  <benchmark description="Insert and retract 10K objects with a firing rule having a simple literal constraint"
             warmups="2" enabled="false"
             classname="org.drools.benchmark.benchmarks.InsertAllAndRetract">
    <arg>10000</arg>
    <arg>literalConstraintFiringRule.drl</arg>
  </benchmark>

  <benchmark description="Insert and retract 10K objects with a non-firing rule having a simple literal constraint"
             warmups="2" enabled="false"
             classname="org.drools.benchmark.benchmarks.InsertAllAndRetract">
    <arg>10000</arg>
    <arg>literalConstraintNonFiringRule.drl</arg>
  </benchmark>

  <benchmark description="Insert 1M objects and retract them (no rules)"
             warmups="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.InsertAllAndRetract">
    <arg>1000000</arg>
  </benchmark>

  <benchmark description="Insert 1M objects and retract them with a single pattern of empty constraints"
             warmups="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.InsertAllAndRetract">
    <arg>1000000</arg>
    <arg>emptyConstraintRule.drl</arg>
  </benchmark>

  <benchmark description="Insert and retract 1M objects with a firing rule having a simple literal constraint"
             warmups="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.InsertAllAndRetract">
    <arg>1000000</arg>
    <arg>literalConstraintFiringRule.drl</arg>
  </benchmark>

  <benchmark description="Insert and retract 1M objects with a non-firing rule having a simple literal constraint"
             warmups="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.InsertAllAndRetract">
    <arg>1000000</arg>
    <arg>literalConstraintNonFiringRule.drl</arg>
  </benchmark>

  <benchmark description="Insert and retract each one in turn 10K objects (no rules)"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.InsertAndRetractInTurn">
    <arg>10000</arg>
  </benchmark>

  <benchmark description="Insert and retract each one in turn 10K objects with a single pattern of empty constraints"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.InsertAndRetractInTurn">
    <arg>10000</arg>
    <arg>emptyConstraintRule.drl</arg>
  </benchmark>

  <benchmark description="Insert and retract each one in turn 10K objects with a firing rule having a simple literal constraint"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.InsertAndRetractInTurn">
    <arg>10000</arg>
    <arg>literalConstraintFiringRule.drl</arg>
  </benchmark>

  <benchmark description="Insert and retract each one in turn 1M objects (no rules)"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.InsertAndRetractInTurn">
    <arg>1000000</arg>
  </benchmark>

  <benchmark description="Insert and retract each one in turn 1M objects with a single pattern of empty constraints"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.InsertAndRetractInTurn">
    <arg>1000000</arg>
    <arg>emptyConstraintRule.drl</arg>
  </benchmark>

  <benchmark description="Insert and retract each one in turn 1M objects  a firing rule having a simple literal constraint"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.InsertAndRetractInTurn">
    <arg>1000000</arg>
    <arg>literalConstraintFiringRule.drl</arg>
  </benchmark>

  <benchmark description="Fibonacci calculator (use index)"
             warmups="2" repetitions="10" enabled="false"
             classname="org.drools.benchmark.benchmarks.FibonacciBenchmark">
    <arg>2000</arg>
  </benchmark>

  <benchmark description="Fibonacci calculator (don't use index - fan out literal values)"
             warmups="2" repetitions="10" enabled="false"
             classname="org.drools.benchmark.benchmarks.FibonacciBenchmark">
    <arg>2000</arg>
    <arg>fibonacci_no_index.drl</arg>
  </benchmark>

  <benchmark description="Java Fire Alarm - test joins"
             warmups="15000" repetitions="100000" enabled="false"
             classname="org.drools.benchmark.benchmarks.FireAlarmBenchmark">
    <arg>100000</arg>
    <arg>fireAlarmJava.drl</arg>
  </benchmark>

  <benchmark description="Mvel Fire Alarm - test joins"
             warmups="1500" repetitions="10000" enabled="false"
             classname="org.drools.benchmark.benchmarks.FireAlarmBenchmark">
    <arg>10000</arg>
    <arg>fireAlarmMvel.drl</arg>
  </benchmark>

  <benchmark description="Manners"
             warmups="2" repetitions="3" enabled="false"
             classname="org.drools.benchmark.benchmarks.MannersBenchmark">
  </benchmark>

  <benchmark description="Waltz"
             warmups="2" repetitions="3" enabled="false"
             classname="org.drools.benchmark.benchmarks.WaltzBenchmark">
  </benchmark>

  <benchmark description="Join"
             warmups="1" repetitions="10" enabled="false"
             classname="org.drools.benchmark.benchmarks.RandomBeansBenchmark">
    <arg>2000</arg>
    <arg>joins.drl</arg>
  </benchmark>

  <benchmark description="Constraints Evaluation"
             warmups="1" repetitions="10" enabled="false"
             classname="org.drools.benchmark.benchmarks.RandomBeansBenchmark">
    <arg>2000</arg>
    <arg>constraintsEvaluation.drl</arg>
  </benchmark>

  <benchmark description="Property Reactivity - Basic"
             warmups="1" repetitions="1" enabled="true"
             classname="org.drools.benchmark.benchmarks.PlainDRLBenchmark">
    <arg>propReactiveBasic.drl</arg>
  </benchmark>

  <benchmark description="Property Reactivity - Basic NoLoop"
             warmups="1" repetitions="1" enabled="true"
             classname="org.drools.benchmark.benchmarks.PlainDRLBenchmark">
    <arg>propReactiveBasicNoLoop.drl</arg>
  </benchmark>

  <benchmark description="Property Reactivity - 1 Rule"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.PlainDRLBenchmark">
    <arg>propReactive1R.drl</arg>
  </benchmark>

  <benchmark description="Property Reactivity NO - 1 Rule"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.PlainDRLBenchmark">
    <arg>propReactive1RNo.drl</arg>
  </benchmark>

  <benchmark description="Property Reactivity - 2 Rules"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.PlainDRLBenchmark">
    <arg>propReactive2R.drl</arg>
  </benchmark>

  <benchmark description="Property Reactivity NO - 2 Rules"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.PlainDRLBenchmark">
    <arg>propReactive2RNo.drl</arg>
  </benchmark>

  <benchmark description="Property Reactivity - 4 Rules"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.PlainDRLBenchmark">
    <arg>propReactive4R.drl</arg>
  </benchmark>

  <benchmark description="Property Reactivity NO - 4 Rules"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.PlainDRLBenchmark">
    <arg>propReactive4RNo.drl</arg>
  </benchmark>

  <benchmark description="Property Reactivity - 2 Patterns"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.PlainDRLBenchmark">
    <arg>propReactive2P.drl</arg>
  </benchmark>

  <benchmark description="Property Reactivity NO - 2 Patterns"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.PlainDRLBenchmark">
    <arg>propReactive2PNo.drl</arg>
  </benchmark>

  <benchmark description="Property Reactivity - 4 Patterns"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.PlainDRLBenchmark">
    <arg>propReactive4P.drl</arg>
  </benchmark>

  <benchmark description="Property Reactivity NO - 4 Patterns"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.PlainDRLBenchmark">
    <arg>propReactive4PNo.drl</arg>
  </benchmark>

  <benchmark description="Property Reactivity - 8 Patterns"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.PlainDRLBenchmark">
    <arg>propReactive8P.drl</arg>
  </benchmark>

  <benchmark description="Property Reactivity NO - 8 Patterns"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.PlainDRLBenchmark">
    <arg>propReactive8PNo.drl</arg>
  </benchmark>

  <benchmark description="Property Reactivity - 16 Patterns"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.PlainDRLBenchmark">
    <arg>propReactive16P.drl</arg>
  </benchmark>

  <benchmark description="Property Reactivity NO - 16 Patterns"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.PlainDRLBenchmark">
    <arg>propReactive16PNo.drl</arg>
  </benchmark>

  <!-- Index -->

  <benchmark description="CompareIndex WorstCase"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.CompareIndexWorstCase">
    <arg>1000000</arg>
    <arg>compareIndexWorstCase.drl</arg>
  </benchmark>

  <benchmark description="CompareIndex LeftModify NoMatch 1 Right"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.CompareIndexLeftModifyNoMatchOneRight">
    <arg>10000</arg>
    <arg>1000</arg>
    <arg>compareIndexLeftModifyNoMatch.drl</arg>
  </benchmark>

  <benchmark description="CompareIndex LeftModify NoMatch ManyRights"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.CompareIndexLeftModifyNoMatchManyRight">
    <arg>10000</arg>
    <arg>1000</arg>
    <arg>compareIndexLeftModifyNoMatch.drl</arg>
  </benchmark>

  <benchmark description="CompareIndex RightModify NoMatch 1 Left"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.CompareIndexRightModifyNoMatchOneLeft">
    <arg>10000</arg>
    <arg>1000</arg>
    <arg>compareIndexRightModifyNoMatch.drl</arg>
  </benchmark>

  <benchmark description="CompareIndex RightModify NoMatch ManyLeft"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.CompareIndexRightModifyNoMatchManyLeft">
    <arg>10000</arg>
    <arg>1000</arg>
    <arg>compareIndexRightModifyNoMatch.drl</arg>
  </benchmark>

  <benchmark description="CompareIndex CrossProductNoMatch"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.CompareIndexCrossProductNoMatch">
    <arg>10000</arg>
    <arg>1000</arg>
    <arg>compareIndexLeftRightModifyNoMatch.drl</arg>
  </benchmark>

  <benchmark description="RangeIndex LeftModify NoMatch ManyRights"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.RangeIndexLeftModifyNoMatch">
    <arg>10000</arg>
    <arg>1000</arg>
    <arg>rangeIndexLeftModifyNoMatch.drl</arg>
  </benchmark>

  <benchmark description="RangeIndex CrossProductNoMatch"
             warmups="1" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.RangeIndexCrossProductNoMatch">
    <arg>1000</arg>
    <arg>1000</arg>
    <arg>rangeIndexLeftRightModifyNoMatch.drl</arg>
  </benchmark>

  <!-- TMS -->

  <benchmark description="TMS - 1M logical facts"
             warmups="10" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.TmsBenchmark">
    <arg>tms1M.drl</arg>
  </benchmark>

  <benchmark description="TMS - 1M logical facts with 3 activations justifying it"
             warmups="10" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.TmsBenchmark">
    <arg>tms_multiple.drl</arg>
  </benchmark>

  <!-- Agenda -->

  <benchmark description="Insert 10K objects fire and update them on 10K rules with different salience"
             warmups="10" repetitions="10" force-warmup="false" enabled="false"
             classname="org.drools.benchmark.benchmarks.AgendaInsertUpdateBenchmark">
    <arg>10000</arg>
  </benchmark>

  <benchmark description="Insert 10K objects and retract them (no fire) on 10K rules with different salience"
             warmups="10" repetitions="10" force-warmup="false" enabled="false"
             classname="org.drools.benchmark.benchmarks.AgendaInsertRetractBenchmark">
    <arg>10000</arg>
  </benchmark>

  <benchmark description="Insert 10K objects fire and retract them on 10K rules with different salience"
             warmups="10" repetitions="10" force-warmup="false" enabled="false"
             classname="org.drools.benchmark.benchmarks.AgendaInsertFireRetractBenchmark">
    <arg>10000</arg>
  </benchmark>

  <!-- Compile-time -->

  <benchmark description="Compile Java Rules"
             warmups="1500" repetitions="1000" enabled="false"
             classname="org.drools.benchmark.benchmarks.RuleCompile">
    <arg>fireAlarmJava.drl</arg>
  </benchmark>

  <benchmark description="Compile MVEL Rules"
             warmups="1500" repetitions="1000" enabled="false"
             classname="org.drools.benchmark.benchmarks.RuleCompile">
    <arg>fireAlarmMvel.drl</arg>
  </benchmark>

  <!-- Fusion -->

  <benchmark description="Complex Event Processing"
             warmups="2" repetitions="1" enabled="false"
             classname="org.drools.benchmark.benchmarks.CepBenchmark">
      <arg>1000000</arg>
  </benchmark>
</benchmarks>