[jboss-svn-commits] JBL Code SVN: r7246 - labs/jbossrules/contrib/benchmarks/src/java/benchmarks

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Oct 30 20:13:59 EST 2006


Author: mark.proctor at jboss.com
Date: 2006-10-30 20:13:57 -0500 (Mon, 30 Oct 2006)
New Revision: 7246

Added:
   labs/jbossrules/contrib/benchmarks/src/java/benchmarks/BaseBenchmark.java
Log:
-Added missing BaseBenchmark

Added: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/BaseBenchmark.java
===================================================================
--- labs/jbossrules/contrib/benchmarks/src/java/benchmarks/BaseBenchmark.java	2006-10-31 00:58:11 UTC (rev 7245)
+++ labs/jbossrules/contrib/benchmarks/src/java/benchmarks/BaseBenchmark.java	2006-10-31 01:13:57 UTC (rev 7246)
@@ -0,0 +1,153 @@
+package benchmarks;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import benchmarks.manners.DroolsManners;
+
+public abstract class BaseBenchmark {
+    public abstract void help();
+      
+    public abstract Benchmark initEngine(String engine);
+    
+    public void run(String[] args) {
+        try {
+            if(args.length != 3) {
+                help();
+            }
+            String engine = args[0];
+            String ruleFile = args[1];
+            String dataFile = args[2];
+                        
+            Benchmark benchmark = initEngine( engine );             
+            
+            System.out.println("Using\nengine: " + engine + "\nrule file: " + ruleFile + "\ndata file: "+ dataFile);
+
+            Runtime rt = Runtime.getRuntime();
+
+            // initial stats
+            long used1 = rt.totalMemory() - rt.freeMemory();
+            long time1 = System.currentTimeMillis();
+
+            boolean getStats = ruleFile.indexOf( "withprints" ) >= 0;
+            
+            // parse and load rulebase
+            benchmark.init(ruleFile, getStats);
+            long used2 = rt.totalMemory() - rt.freeMemory();
+            long time2 = System.currentTimeMillis();
+            
+            // assert objects
+            benchmark.assertObjects( dataFile );
+            long time3 = System.currentTimeMillis();
+            long used3 = rt.totalMemory() - rt.freeMemory();
+
+            // fire rules
+            benchmark.fireAllRules();
+            long time4 = System.currentTimeMillis();
+            long used4 = rt.totalMemory() - rt.freeMemory();
+            
+            // calling gc
+            rt.gc();
+            long time5 = System.currentTimeMillis();
+            long used5 = rt.totalMemory() - rt.freeMemory();
+
+            System.out.println("\n\n RESULTS:\n");
+            System.out.println("    - Rules parsing time : "+new Long(time2-time1)+" ms   - Memory used:  + "+new Long((used2-used1)/1024)+" Kb\n");
+            System.out.println("    - Assertion time     : " + new Long(time3-time2) +" ms   - Memory used:  + " + new Long((used3-used2)/1024)+" Kb\n");
+            System.out.println("    - Rules firing time  : " + new Long(time4-time3) +" ms   - Memory used:  + " + new Long((used4-used3)/1024)+" Kb\n");
+            System.out.println("----------------------------------------------------------------\n");
+            System.out.println("    - Total time         : "+ new Long(time4-time1)+" ms   - Total memory: + "+new Long((used4-used1)/1024)+" Kb\n");
+            System.out.println("    - GC Run time        : "+new Long(time5-time4)+" ms   - Mem after GC: + "+new Long((used5-used1)/1024)+" Kb\n\n");
+            
+            Stats stats = benchmark.getStats();
+            if (  stats == null ) {
+                return;
+            }
+                        
+            Map created = stats.getCreated();
+            System.out.println("Total Created:  " +  created.size() );
+            System.out.println("--------------------" );
+            for( Iterator  it = created.entrySet().iterator(); it.hasNext(); ) {
+                Entry entry = (Entry) it.next();
+                System.out.println("created: " + entry.getKey() + " : " + entry.getValue() );
+            }
+            System.out.println("");
+            Map cancelled = stats.getCancelled();
+            System.out.println("Total Cancelled:  " +  cancelled.size() );
+            System.out.println("--------------------" );            
+            for( Iterator  it = cancelled.entrySet().iterator(); it.hasNext(); ) {
+                Entry entry = (Entry) it.next();
+                System.out.println("cancelled: " + entry.getKey() + " : " + entry.getValue() );
+            }  
+            System.out.println("");
+            Map fired = stats.getFired();
+            System.out.println("Total Fired:  " +  fired.size() );
+            System.out.println("--------------------" );            
+            for( Iterator  it = fired.entrySet().iterator(); it.hasNext(); ) {
+                Entry entry = (Entry) it.next();
+                System.out.println("fired: " + entry.getKey() + " : " + entry.getValue() );
+            }            
+            System.out.println("");
+        } catch (Throwable t) {
+            t.printStackTrace();
+        }
+    }
+
+    public static class Stats {
+        private Map created = new HashMap();
+        private Map cancelled = new HashMap();
+        private Map fired = new HashMap();
+        
+        public void created(String ruleName) {
+            Counter counter = ( Counter ) created.get( ruleName );
+            if  ( counter == null ) {
+                counter = new Counter();
+                created.put( ruleName, counter );
+            }
+            counter.increase();
+        }
+        
+        public void cancelled(String ruleName) {
+            Counter counter = ( Counter ) cancelled.get( ruleName );
+            if  ( counter == null ) {
+                counter = new Counter();
+                cancelled.put( ruleName, counter );
+            }
+            counter.increase();
+        }
+        
+        public void fired(String ruleName) {
+            Counter counter = ( Counter ) fired.get( ruleName );
+            if  ( counter == null ) {
+                counter = new Counter();
+                fired.put( ruleName, counter );
+            }
+            counter.increase();
+        }
+
+        public Map getCancelled() {
+            return cancelled;
+        }
+
+        public Map getCreated() {
+            return created;
+        }
+
+        public Map getFired() {
+            return fired;
+        }                          
+    }
+    
+    public static class Counter {
+        int value=0;
+        public void increase(){
+            value++;
+        }       
+        
+        public String  toString() {
+            return ""+this.value;
+        }
+    }    
+}




More information about the jboss-svn-commits mailing list