From 9921cb314da7b776f56c71984360f712f21d6f60 Mon Sep 17 00:00:00 2001 From: Tihomir Surdilovic Date: Tue, 4 Jan 2011 10:12:20 -0500 Subject: [PATCH] JBRULES-2764: Performance degradation from 4.0.7 to 5.0.1 to 5.1.1 --- .../java/org/drools/RuleBaseConfiguration.java | 6 ++++++ .../main/java/org/drools/SessionConfiguration.java | 6 ++++++ .../src/main/java/org/drools/agent/RuleAgent.java | 2 +- .../java/org/drools/common/AbstractRuleBase.java | 2 +- .../java/org/drools/impl/KnowledgeBaseImpl.java | 4 ++-- .../drools/impl/StatelessKnowledgeSessionImpl.java | 4 ++-- .../drools/marshalling/impl/DefaultMarshaller.java | 2 +- .../drools/marshalling/impl/InputMarshaller.java | 2 +- .../java/org/drools/reteoo/ReteooRuleBase.java | 4 ++-- .../org/drools/reteoo/ReteooStatefulSession.java | 2 +- .../org/drools/reteoo/ReteooStatelessSession.java | 4 ++-- .../org/drools/reteoo/ReteooWorkingMemory.java | 2 +- 12 files changed, 26 insertions(+), 14 deletions(-) diff --git a/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java b/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java index 4556728..3176189 100755 --- a/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java +++ b/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java @@ -150,6 +150,12 @@ public class RuleBaseConfiguration private boolean advancedProcessRuleIntegration; private transient CompositeClassLoader classLoader; + + private static final RuleBaseConfiguration defaultConf = new RuleBaseConfiguration(); + + public static RuleBaseConfiguration getDefaultInstance() { + return defaultConf; + } public void writeExternal(ObjectOutput out) throws IOException { out.writeObject( chainedProperties ); diff --git a/drools-core/src/main/java/org/drools/SessionConfiguration.java b/drools-core/src/main/java/org/drools/SessionConfiguration.java index c3a3cc8..4ef484a 100644 --- a/drools-core/src/main/java/org/drools/SessionConfiguration.java +++ b/drools-core/src/main/java/org/drools/SessionConfiguration.java @@ -94,6 +94,12 @@ public class SessionConfiguration out.writeObject( clockType ); out.writeObject( queryListener ); } + + private static final SessionConfiguration defaultInstance = new SessionConfiguration(); + + public static SessionConfiguration getDefaultInstance() { + return defaultInstance; + } @SuppressWarnings("unchecked") public void readExternal(ObjectInput in) throws IOException, diff --git a/drools-core/src/main/java/org/drools/agent/RuleAgent.java b/drools-core/src/main/java/org/drools/agent/RuleAgent.java index 7a57162..d5fec45 100644 --- a/drools-core/src/main/java/org/drools/agent/RuleAgent.java +++ b/drools-core/src/main/java/org/drools/agent/RuleAgent.java @@ -483,7 +483,7 @@ public class RuleAgent { RuleAgent(RuleBaseConfiguration ruleBaseConf) { if ( ruleBaseConf == null ) { - this.ruleBaseConf = new RuleBaseConfiguration(); + this.ruleBaseConf = RuleBaseConfiguration.getDefaultInstance(); } else { this.ruleBaseConf = ruleBaseConf; } diff --git a/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java b/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java index 608a202..c725935 100644 --- a/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java +++ b/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java @@ -362,7 +362,7 @@ abstract public class AbstractRuleBase * @see RuleBase */ public StatefulSession newStatefulSession() { - return newStatefulSession( new SessionConfiguration(), + return newStatefulSession( SessionConfiguration.getDefaultInstance(), EnvironmentFactory.newEnvironment() ); } diff --git a/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java b/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java index 5b61e23..5266826 100644 --- a/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java +++ b/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java @@ -153,13 +153,13 @@ public class KnowledgeBaseImpl } public StatefulKnowledgeSession newStatefulKnowledgeSession() { - return newStatefulKnowledgeSession(new SessionConfiguration(), EnvironmentFactory.newEnvironment() ); + return newStatefulKnowledgeSession(null, EnvironmentFactory.newEnvironment() ); } public StatefulKnowledgeSession newStatefulKnowledgeSession(KnowledgeSessionConfiguration conf, Environment environment) { // NOTE if you update here, you'll also need to update the JPAService if ( conf == null ) { - conf = new SessionConfiguration(); + conf = SessionConfiguration.getDefaultInstance(); } if ( environment == null ) { diff --git a/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java b/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java index c8d31d0..2bb1fe6 100644 --- a/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java +++ b/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java @@ -74,7 +74,7 @@ public class StatelessKnowledgeSessionImpl private KnowledgeSessionConfiguration conf; private Environment environment; - + public StatelessKnowledgeSessionImpl() { } @@ -83,7 +83,7 @@ public class StatelessKnowledgeSessionImpl final KnowledgeSessionConfiguration conf) { this.ruleBase = ruleBase; this.kagent = kagent; - this.conf = (conf != null) ? conf : new SessionConfiguration(); + this.conf = (conf != null) ? conf : SessionConfiguration.getDefaultInstance(); this.environment = EnvironmentFactory.newEnvironment(); if ( this.ruleBase != null ) { diff --git a/drools-core/src/main/java/org/drools/marshalling/impl/DefaultMarshaller.java b/drools-core/src/main/java/org/drools/marshalling/impl/DefaultMarshaller.java index a6443ec..17083f7 100644 --- a/drools-core/src/main/java/org/drools/marshalling/impl/DefaultMarshaller.java +++ b/drools-core/src/main/java/org/drools/marshalling/impl/DefaultMarshaller.java @@ -52,7 +52,7 @@ public class DefaultMarshaller public DefaultMarshaller(KnowledgeBase kbase, MarshallingConfiguration marshallingConfig) { this.kbase = kbase; - this.ruleBaseConfig = (ruleBaseConfig != null) ? ruleBaseConfig : new RuleBaseConfiguration(); + this.ruleBaseConfig = (ruleBaseConfig != null) ? ruleBaseConfig : RuleBaseConfiguration.getDefaultInstance(); this.marshallingConfig = marshallingConfig; this.strategyStore = this.marshallingConfig.getObjectMarshallingStrategyStore(); } diff --git a/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java b/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java index 123b323..11d601b 100644 --- a/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java +++ b/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java @@ -168,7 +168,7 @@ public class InputMarshaller { int id, ExecutorService executor) throws IOException, ClassNotFoundException { - return readSession( context, id, executor, EnvironmentFactory.newEnvironment(), new SessionConfiguration() ); + return readSession( context, id, executor, EnvironmentFactory.newEnvironment(), new SessionConfiguration().getDefaultInstance() ); } public static ReteooStatefulSession readSession(MarshallerReaderContext context, diff --git a/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java b/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java index 5326d5b..2259a13 100644 --- a/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java +++ b/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java @@ -331,7 +331,7 @@ public class ReteooRuleBase extends AbstractRuleBase { ByteArrayInputStream bais = new ByteArrayInputStream( rsession.bytes ); Marshaller marshaller = MarshallerFactory.newMarshaller( new KnowledgeBaseImpl( this ) ); StatefulKnowledgeSession ksession = marshaller.unmarshall( bais, - new SessionConfiguration(), + SessionConfiguration.getDefaultInstance(), EnvironmentFactory.newEnvironment() ); session = (StatefulSession) ((StatefulKnowledgeSessionImpl) ksession).session; @@ -363,7 +363,7 @@ public class ReteooRuleBase extends AbstractRuleBase { public StatefulSession newStatefulSession(SessionConfiguration sessionConfig, Environment environment) { if ( sessionConfig == null ) { - sessionConfig = ( SessionConfiguration ) KnowledgeBaseFactory.newKnowledgeSessionConfiguration(); + sessionConfig = SessionConfiguration.getDefaultInstance(); } if ( environment == null ) { environment = EnvironmentFactory.newEnvironment(); diff --git a/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java b/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java index 0885958..42326f2 100644 --- a/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java +++ b/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java @@ -68,7 +68,7 @@ public class ReteooStatefulSession extends ReteooWorkingMemory this( id, ruleBase, executorService, - new SessionConfiguration(), + SessionConfiguration.getDefaultInstance(), EnvironmentFactory.newEnvironment() ); } diff --git a/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.java b/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.java index 5d2775c..9d94028 100644 --- a/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.java +++ b/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.java @@ -75,7 +75,7 @@ public class ReteooStatelessSession public ReteooStatelessSession(final InternalRuleBase ruleBase) { this.ruleBase = ruleBase; - this.sessionConf = new SessionConfiguration(); // create one of these and re-use + this.sessionConf = SessionConfiguration.getDefaultInstance(); // create one of these and re-use } public void readExternal(ObjectInput in) throws IOException, @@ -84,7 +84,7 @@ public class ReteooStatelessSession agendaFilter = (AgendaFilter) in.readObject(); globalResolver = (GlobalResolver) in.readObject(); globalExporter = (GlobalExporter) in.readObject(); - this.sessionConf = new SessionConfiguration(); // create one of these and re-use + this.sessionConf = SessionConfiguration.getDefaultInstance(); // create one of these and re-use } public void writeExternal(ObjectOutput out) throws IOException { diff --git a/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java b/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java index 347d920..36d27e3 100644 --- a/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java +++ b/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java @@ -80,7 +80,7 @@ public class ReteooWorkingMemory extends AbstractWorkingMemory { final InternalRuleBase ruleBase) { this( id, ruleBase, - new SessionConfiguration(), + SessionConfiguration.getDefaultInstance(), EnvironmentFactory.newEnvironment() ); } -- 1.7.2.2