📄 rulesetperformancetest.java
字号:
WorkingMemory workingMemory = ruleBase.newWorkingMemory();
ArrayList objects = new ArrayList();
// create the objects
for ( int idx = 0; idx < factCount; idx++ ) {
Account acc = new Account();
acc.setAccountId( "acc" + idx );
acc.setTitle( "mr" );
acc.setStatus( "standard" );
objects.add( acc );
}
Iterator itr = objects.iterator();
long assertStart = System.currentTimeMillis();
while ( itr.hasNext() ) {
workingMemory.assertObject( itr.next() );
}
long assertEnd = System.currentTimeMillis();
long assertet = assertEnd - assertStart;
totalassert += assertet;
System.out.println( "time to assert " + assertet + " ms" );
long fireStart = System.currentTimeMillis();
workingMemory.fireAllRules();
long fireEnd = System.currentTimeMillis();
long fireet = fireEnd - fireStart;
totalfire += fireet;
System.out.println( "time to fireAllRules " + fireet + " ms" );
workingMemory.dispose();
}
System.out.println( file );
System.out.println( "number of objects asserted " + factCount );
System.out.println( "average load " + (totalload / loop) + " ms" );
System.out.println( "average assert " + (totalassert / loop) + " ms" );
System.out.println( "average fire " + (totalfire / loop) + " ms" );
} catch ( Exception e ) {
e.printStackTrace();
}
}
/**
*
*
*/
public void test2KRuleFire() {
try {
int factCount = 50000;
String file = "2000_rules_1condition.rule";
int loop = 5;
long totalload = 0;
long totalassert = 0;
long totalfire = 0;
for ( int c = 0; c < loop; c++ ) {
long loadStart = System.currentTimeMillis();
RuleBase ruleBase = readRule( file );
long loadEnd = System.currentTimeMillis();
long loadet = loadEnd - loadStart;
totalload += loadet;
System.out.println( "time to load " + file + " " + loadet + "ms" );
WorkingMemory workingMemory = ruleBase.newWorkingMemory();
ArrayList objects = new ArrayList();
// create the objects
for ( int idx = 0; idx < factCount; idx++ ) {
Account acc = new Account();
acc.setAccountId( "acc" + idx );
acc.setTitle( "mr" );
acc.setStatus( "standard" );
objects.add( acc );
}
Iterator itr = objects.iterator();
long assertStart = System.currentTimeMillis();
while ( itr.hasNext() ) {
workingMemory.assertObject( itr.next() );
}
long assertEnd = System.currentTimeMillis();
long assertet = assertEnd - assertStart;
totalassert += assertet;
System.out.println( "time to assert " + assertet + " ms" );
long fireStart = System.currentTimeMillis();
workingMemory.fireAllRules();
long fireEnd = System.currentTimeMillis();
long fireet = fireEnd - fireStart;
totalfire += fireet;
System.out.println( "time to fireAllRules " + fireet + " ms" );
workingMemory.dispose();
}
System.out.println( file );
System.out.println( "number of objects asserted " + factCount );
System.out.println( "average load " + (totalload / loop) + " ms" );
System.out.println( "average assert " + (totalassert / loop) + " ms" );
System.out.println( "average fire " + (totalfire / loop) + " ms" );
} catch ( Exception e ) {
e.printStackTrace();
}
}
public void test2KRuleFire2Conditions() {
try {
int factCount = 50000;
String file = "2000_rules_2condition.rule";
int loop = 5;
long totalload = 0;
long totalassert = 0;
long totalfire = 0;
for ( int c = 0; c < loop; c++ ) {
long loadStart = System.currentTimeMillis();
RuleBase ruleBase = readRule( file );
long loadEnd = System.currentTimeMillis();
long loadet = loadEnd - loadStart;
totalload += loadet;
System.out.println( "time to load " + file + " " + loadet + "ms" );
WorkingMemory workingMemory = ruleBase.newWorkingMemory();
ArrayList objects = new ArrayList();
// create the objects
for ( int idx = 0; idx < factCount; idx++ ) {
Account acc = new Account();
acc.setAccountId( "acc" + idx );
acc.setTitle( "mr" );
acc.setStatus( "standard" );
objects.add( acc );
}
Iterator itr = objects.iterator();
long assertStart = System.currentTimeMillis();
while ( itr.hasNext() ) {
workingMemory.assertObject( itr.next() );
}
long assertEnd = System.currentTimeMillis();
long assertet = assertEnd - assertStart;
totalassert += assertet;
System.out.println( "time to assert " + assertet + " ms" );
long fireStart = System.currentTimeMillis();
workingMemory.fireAllRules();
long fireEnd = System.currentTimeMillis();
long fireet = fireEnd - fireStart;
totalfire += fireet;
System.out.println( "time to fireAllRules " + fireet + " ms" );
workingMemory.dispose();
}
System.out.println( file );
System.out.println( "number of objects asserted " + factCount );
System.out.println( "average load " + (totalload / loop) + " ms" );
System.out.println( "average assert " + (totalassert / loop) + " ms" );
System.out.println( "average fire " + (totalfire / loop) + " ms" );
} catch ( Exception e ) {
e.printStackTrace();
}
}
public void test2KRuleFire3Conditions() {
try {
int factCount = 50000;
String file = "2000_rules_3condition.rule";
int loop = 5;
long totalload = 0;
long totalassert = 0;
long totalfire = 0;
for ( int c = 0; c < loop; c++ ) {
long loadStart = System.currentTimeMillis();
RuleBase ruleBase = readRule( file );
long loadEnd = System.currentTimeMillis();
long loadet = loadEnd - loadStart;
totalload += loadet;
System.out.println( "time to load " + file + " " + loadet + "ms" );
WorkingMemory workingMemory = ruleBase.newWorkingMemory();
ArrayList objects = new ArrayList();
// create the objects
for ( int idx = 0; idx < factCount; idx++ ) {
Account acc = new Account();
acc.setAccountId( "acc" + idx );
acc.setTitle( "mr" );
acc.setStatus( "standard" );
objects.add( acc );
}
Iterator itr = objects.iterator();
long assertStart = System.currentTimeMillis();
while ( itr.hasNext() ) {
workingMemory.assertObject( itr.next() );
}
long assertEnd = System.currentTimeMillis();
long assertet = assertEnd - assertStart;
totalassert += assertet;
System.out.println( "time to assert " + assertet + " ms" );
long fireStart = System.currentTimeMillis();
workingMemory.fireAllRules();
long fireEnd = System.currentTimeMillis();
long fireet = fireEnd - fireStart;
totalfire += fireet;
System.out.println( "time to fireAllRules " + fireet + " ms" );
workingMemory.dispose();
}
System.out.println( file );
System.out.println( "number of objects asserted " + factCount );
System.out.println( "average load " + (totalload / loop) + " ms" );
System.out.println( "average assert " + (totalassert / loop) + " ms" );
System.out.println( "average fire " + (totalfire / loop) + " ms" );
} catch ( Exception e ) {
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -