📄 sharednodeperformancetest.java
字号:
RuleBase ruleBase = readRule( file );
long loadEnd = System.currentTimeMillis();
long loadet = loadEnd - loadStart;
totalload += loadet;
rt.gc();
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++ ) {
Address addr = new Address();
addr.setCity( "boston" );
addr.setState( "ma" );
addr.setHouseType( "single family" );
addr.setStatus( "not listed" + idx );
addr.setCountry( "usa" );
objects.add( addr );
}
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;
rt.gc();
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();
rt.gc();
}
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 testTwoSharedNodes() {
try {
int factCount = 5000;
String file = "20rules_2shared.drl";
int loop = 5;
long totalload = 0;
long totalassert = 0;
long totalfire = 0;
Runtime rt = Runtime.getRuntime();
for ( int c = 0; c < loop; c++ ) {
rt.gc();
long loadStart = System.currentTimeMillis();
RuleBase ruleBase = readRule( file );
long loadEnd = System.currentTimeMillis();
long loadet = loadEnd - loadStart;
totalload += loadet;
rt.gc();
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++ ) {
Address addr = new Address();
addr.setCity( "boston" );
addr.setState( "ma" );
addr.setHouseType( "single family" + idx );
addr.setStatus( "not listed" );
addr.setCountry( "usa" );
objects.add( addr );
}
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;
rt.gc();
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();
rt.gc();
}
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 testOneSharedNodes() {
try {
int factCount = 5000;
String file = "20rules_1shared.drl";
int loop = 5;
long totalload = 0;
long totalassert = 0;
long totalfire = 0;
Runtime rt = Runtime.getRuntime();
for ( int c = 0; c < loop; c++ ) {
rt.gc();
long loadStart = System.currentTimeMillis();
RuleBase ruleBase = readRule( file );
long loadEnd = System.currentTimeMillis();
long loadet = loadEnd - loadStart;
totalload += loadet;
rt.gc();
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++ ) {
Address addr = new Address();
addr.setCity( "boston" );
addr.setState( "ma" + idx );
addr.setHouseType( "single family" );
addr.setStatus( "not listed" );
addr.setCountry( "usa" );
objects.add( addr );
}
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;
rt.gc();
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();
rt.gc();
}
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 testNoneSharedNodes() {
try {
int factCount = 5000;
String file = "20rules_0shared.drl";
int loop = 5;
long totalload = 0;
long totalassert = 0;
long totalfire = 0;
Runtime rt = Runtime.getRuntime();
for ( int c = 0; c < loop; c++ ) {
rt.gc();
long loadStart = System.currentTimeMillis();
RuleBase ruleBase = readRule( file );
long loadEnd = System.currentTimeMillis();
long loadet = loadEnd - loadStart;
totalload += loadet;
rt.gc();
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++ ) {
Address addr = new Address();
addr.setAccountId( "acc" + idx );
addr.setCity( "boston" );
addr.setState( "ma" );
addr.setHouseType( "single family" );
addr.setStatus( "not listed" );
addr.setCountry( "usa" );
objects.add( addr );
}
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;
rt.gc();
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();
rt.gc();
}
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 + -