drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/session/UpdatesOnJoinBenchmark.java [47:111]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    @Param({"10", "20", "50"})
    private int loopCount;

    @Param({"4", "8", "16"})
    private int rulesNr;

    @Param({"8", "10", "12"})
    private int factsNr;

    private A[] as;
    private B[] bs;
    private C[] cs;
    private D[] ds;

    private FactHandle[] aFHs;
    private FactHandle[] bFHs;
    private FactHandle[] cFHs;
    private FactHandle[] dFHs;

    @Setup
    public void setupKieBase() {
        final DRLProvider drlProvider = new RulesWithJoinsProvider(3, false, true);
        kieBase = BuildtimeUtil.createKieBaseFromDrl(drlProvider.getDrl(rulesNr));
    }

    @Setup(Level.Iteration)
    @Override
    public void setup() {
        kieSession = RuntimeUtil.createKieSession(kieBase);

        as = new A[factsNr];
        bs = new B[factsNr];
        cs = new C[factsNr];
        ds = new D[factsNr];

        aFHs = new FactHandle[factsNr];
        bFHs = new FactHandle[factsNr];
        cFHs = new FactHandle[factsNr];
        dFHs = new FactHandle[factsNr];
    }

    @Benchmark
    public int test() {
        for (int i = 0; i < factsNr; i++) {
            as[i] = new A(rulesNr + 1);
            aFHs[i] = kieSession.insert(as[i]);
            bs[i] = new B(rulesNr + 3);
            bFHs[i] = kieSession.insert(bs[i]);
            cs[i] = new C(rulesNr + 5);
            cFHs[i] = kieSession.insert(cs[i]);
            ds[i] = new D(rulesNr + 7);
            dFHs[i] = kieSession.insert(ds[i]);
        }

        for (int i = 0; i < loopCount; i++) {
            for (int j = 0; j < factsNr; j++) {
                as[j].setValue(as[j].getValue() + 1);
                kieSession.update(aFHs[j], as[j]);
                bs[j].setValue(bs[j].getValue() + 1);
                kieSession.update(bFHs[j], bs[j]);
                cs[j].setValue(cs[j].getValue() + 1);
                kieSession.update(cFHs[j], cs[j]);

                ds[j].setValue(ds[j].getValue() + 1);
                kieSession.update(dFHs[j], ds[j]);
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



drools-benchmarks-parent/drools-benchmarks/src/main/java/org/drools/benchmarks/session/UpdatesOnJoinUnmatchRootNodeBenchmark.java [47:111]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    @Param({"10", "20", "50"})
    private int loopCount;

    @Param({"4", "8", "16"})
    private int rulesNr;

    @Param({"8", "10", "12"})
    private int factsNr;

    private A[] as;
    private B[] bs;
    private C[] cs;
    private D[] ds;

    private FactHandle[] aFHs;
    private FactHandle[] bFHs;
    private FactHandle[] cFHs;
    private FactHandle[] dFHs;

    @Setup
    public void setupKieBase() {
        final DRLProvider drlProvider = new RulesWithJoinsProvider(3, false, true);
        kieBase = BuildtimeUtil.createKieBaseFromDrl(drlProvider.getDrl(rulesNr));
    }

    @Setup(Level.Iteration)
    @Override
    public void setup() {
        kieSession = RuntimeUtil.createKieSession(kieBase);

        as = new A[factsNr];
        bs = new B[factsNr];
        cs = new C[factsNr];
        ds = new D[factsNr];

        aFHs = new FactHandle[factsNr];
        bFHs = new FactHandle[factsNr];
        cFHs = new FactHandle[factsNr];
        dFHs = new FactHandle[factsNr];
    }

    @Benchmark
    public int test() {
        for (int i = 0; i < factsNr; i++) {
            as[i] = new A(rulesNr + 1);
            aFHs[i] = kieSession.insert(as[i]);
            bs[i] = new B(rulesNr + 3);
            bFHs[i] = kieSession.insert(bs[i]);
            cs[i] = new C(rulesNr + 5);
            cFHs[i] = kieSession.insert(cs[i]);
            ds[i] = new D(rulesNr + 7);
            dFHs[i] = kieSession.insert(ds[i]);
        }

        for (int i = 0; i < loopCount; i++) {
            for (int j = 0; j < factsNr; j++) {
                as[j].setValue(as[j].getValue() + 1);
                kieSession.update(aFHs[j], as[j]);
                bs[j].setValue(bs[j].getValue() + 1);
                kieSession.update(bFHs[j], bs[j]);
                cs[j].setValue(cs[j].getValue() + 1);
                kieSession.update(cFHs[j], cs[j]);

                ds[j].setValue(ds[j].getValue() + 1);
                kieSession.update(dFHs[j], ds[j]);
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



