[jboss-jira] [JBoss JIRA] (DROOLS-2837) Avoid switching by putting the leftInputAdapterNode in an Hashmap

Luca Molteni (JIRA) issues at jboss.org
Mon Aug 6 11:19:00 EDT 2018


     [ https://issues.jboss.org/browse/DROOLS-2837?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Luca Molteni updated DROOLS-2837:
---------------------------------
    Description: 
In this test:

testAlphaConstraintsSwitchBigDecimal

Let's go from this

{code:java}
private java.util.Map ToNodeId = new java.util.HashMap();

        ToNodeId.put(new java.math.BigDecimal("0"), 4);
        ToNodeId.put(new java.math.BigDecimal("2"), 10);
        ToNodeId.put(new java.math.BigDecimal("1"), 7);

public final void assertObject(org.drools.core.common.InternalFactHandle handle,org.drools.core.spi.PropagationContext context,org.drools.core.common.InternalWorkingMemory wm){
        org.drools.modelcompiler.domain.Person fact = (org.drools.modelcompiler.domain.Person)handle.getObject();
        Integer NodeId = (Integer)ToNodeId.get(readAccessor.getValue(fact));
        if(NodeId != null) {
        switch(NodeId.intValue()) {
        case 4 :
        leftInputAdapterNode5.assertObject(handle,context,wm);
        break;
        case 7 :
        leftInputAdapterNode8.assertObject(handle,context,wm);
        break;
        case 10 :
        leftInputAdapterNode11.assertObject(handle,context,wm);
        break;
        }
        }
        }
{code}

to This

{code:java}
private java.util.Map ToNodeId=new java.util.HashMap();
        ToNodeId.put(new java.math.BigDecimal("0"),leftInputAdapterNode5);
        ToNodeId.put(new java.math.BigDecimal("2"),leftInputAdapterNode11);
        ToNodeId.put(new java.math.BigDecimal("1"),leftInputAdapterNode8);

public final void assertObject(org.drools.core.common.InternalFactHandle handle,org.drools.core.spi.PropagationContext context,org.drools.core.common.InternalWorkingMemory wm){
        org.drools.modelcompiler.domain.Person fact=(org.drools.modelcompiler.domain.Person)handle.getObject();
        org.drools.core.reteoo.LeftInputAdapterNode lia=(Integer)ToNodeId.get(readAccessor.getValue(fact));
        if(lia!=null){
        lia.assertOject(handle,context,wm);
        }
{code}

Therefore avoiding the switch

  was:
In this test:

testAlphaConstraintsSwitchBigDecimal

Let's go from this


private java.util.Map ToNodeId = new java.util.HashMap();

        ToNodeId.put(new java.math.BigDecimal("0"), 4);
        ToNodeId.put(new java.math.BigDecimal("2"), 10);
        ToNodeId.put(new java.math.BigDecimal("1"), 7);

public final void assertObject(org.drools.core.common.InternalFactHandle handle,org.drools.core.spi.PropagationContext context,org.drools.core.common.InternalWorkingMemory wm){
        org.drools.modelcompiler.domain.Person fact = (org.drools.modelcompiler.domain.Person)handle.getObject();
        Integer NodeId = (Integer)ToNodeId.get(readAccessor.getValue(fact));
        if(NodeId != null) {
        switch(NodeId.intValue()) {
        case 4 :
        leftInputAdapterNode5.assertObject(handle,context,wm);
        break;
        case 7 :
        leftInputAdapterNode8.assertObject(handle,context,wm);
        break;
        case 10 :
        leftInputAdapterNode11.assertObject(handle,context,wm);
        break;
        }
        }
        }


to This

private java.util.Map ToNodeId=new java.util.HashMap();
        ToNodeId.put(new java.math.BigDecimal("0"),leftInputAdapterNode5);
        ToNodeId.put(new java.math.BigDecimal("2"),leftInputAdapterNode11);
        ToNodeId.put(new java.math.BigDecimal("1"),leftInputAdapterNode8);

public final void assertObject(org.drools.core.common.InternalFactHandle handle,org.drools.core.spi.PropagationContext context,org.drools.core.common.InternalWorkingMemory wm){
        org.drools.modelcompiler.domain.Person fact=(org.drools.modelcompiler.domain.Person)handle.getObject();
        org.drools.core.reteoo.LeftInputAdapterNode lia=(Integer)ToNodeId.get(readAccessor.getValue(fact));
        if(lia!=null){
        lia.assertOject(handle,context,wm);
        }

Therefore avoiding the switch



> Avoid switching by putting the leftInputAdapterNode in an Hashmap
> -----------------------------------------------------------------
>
>                 Key: DROOLS-2837
>                 URL: https://issues.jboss.org/browse/DROOLS-2837
>             Project: Drools
>          Issue Type: Enhancement
>            Reporter: Luca Molteni
>            Assignee: Luca Molteni
>
> In this test:
> testAlphaConstraintsSwitchBigDecimal
> Let's go from this
> {code:java}
> private java.util.Map ToNodeId = new java.util.HashMap();
>         ToNodeId.put(new java.math.BigDecimal("0"), 4);
>         ToNodeId.put(new java.math.BigDecimal("2"), 10);
>         ToNodeId.put(new java.math.BigDecimal("1"), 7);
> public final void assertObject(org.drools.core.common.InternalFactHandle handle,org.drools.core.spi.PropagationContext context,org.drools.core.common.InternalWorkingMemory wm){
>         org.drools.modelcompiler.domain.Person fact = (org.drools.modelcompiler.domain.Person)handle.getObject();
>         Integer NodeId = (Integer)ToNodeId.get(readAccessor.getValue(fact));
>         if(NodeId != null) {
>         switch(NodeId.intValue()) {
>         case 4 :
>         leftInputAdapterNode5.assertObject(handle,context,wm);
>         break;
>         case 7 :
>         leftInputAdapterNode8.assertObject(handle,context,wm);
>         break;
>         case 10 :
>         leftInputAdapterNode11.assertObject(handle,context,wm);
>         break;
>         }
>         }
>         }
> {code}
> to This
> {code:java}
> private java.util.Map ToNodeId=new java.util.HashMap();
>         ToNodeId.put(new java.math.BigDecimal("0"),leftInputAdapterNode5);
>         ToNodeId.put(new java.math.BigDecimal("2"),leftInputAdapterNode11);
>         ToNodeId.put(new java.math.BigDecimal("1"),leftInputAdapterNode8);
> public final void assertObject(org.drools.core.common.InternalFactHandle handle,org.drools.core.spi.PropagationContext context,org.drools.core.common.InternalWorkingMemory wm){
>         org.drools.modelcompiler.domain.Person fact=(org.drools.modelcompiler.domain.Person)handle.getObject();
>         org.drools.core.reteoo.LeftInputAdapterNode lia=(Integer)ToNodeId.get(readAccessor.getValue(fact));
>         if(lia!=null){
>         lia.assertOject(handle,context,wm);
>         }
> {code}
> Therefore avoiding the switch



--
This message was sent by Atlassian JIRA
(v7.5.0#75005)


More information about the jboss-jira mailing list