Author: degenaro
Date: Thu Apr 18 17:52:31 2013
New Revision: 1469496

URL: http://svn.apache.org/r1469496
Log:
UIMA-2793 Gather and display UIMA Component Statistics after last CAS is 
processed

Modified:
    
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/aio/AllInOne.java
    
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/aio/CasPipeline.java

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/aio/AllInOne.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/aio/AllInOne.java?rev=1469496&r1=1469495&r2=1469496&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/aio/AllInOne.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/aio/AllInOne.java
 Thu Apr 18 17:52:31 2013
@@ -42,6 +42,8 @@ public class AllInOne extends CliBase {
        
        private JobRequestProperties jobRequestProperties = new 
JobRequestProperties(); 
        
+       private boolean showStats = true;
+       
        CasGenerator casGenerator;
        CasPipeline casPipeline;
        
@@ -117,12 +119,19 @@ public class AllInOne extends CliBase {
                mh.frameworkTrace(cid, mid, "exit");
        }
        
+       private void statistics() {
+               if(showStats) {
+                       casPipeline.dumpStatistics(System.out);
+               }
+       }
+       
        public void go() throws Exception {
                String mid = "go";
                mh.frameworkTrace(cid, mid, "enter");
                examine();
                initialize();
                process();
+               statistics();
                mh.frameworkTrace(cid, mid, "exit");
        }
        

Modified: 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/aio/CasPipeline.java
URL: 
http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/aio/CasPipeline.java?rev=1469496&r1=1469495&r2=1469496&view=diff
==============================================================================
--- 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/aio/CasPipeline.java
 (original)
+++ 
uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/aio/CasPipeline.java
 Thu Apr 18 17:52:31 2013
@@ -21,6 +21,7 @@ package org.apache.uima.ducc.cli.aio;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
+import java.io.PrintStream;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
@@ -29,6 +30,7 @@ import java.util.Properties;
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.analysis_engine.AnalysisEngine;
 import org.apache.uima.analysis_engine.AnalysisEngineDescription;
+import org.apache.uima.analysis_engine.AnalysisEngineManagement;
 import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.ducc.cli.IUiOptions.UiOption;
@@ -162,4 +164,25 @@ public class CasPipeline {
                ae.process(cas);
                return cas;
        }
+       
+       public void dumpStatistics(PrintStream out) {
+               out.println("");
+               out.println("+---------------------------+");
+               out.println("| UIMA Component Statistics |");
+               out.println("+---------------------------+");
+               out.println("");
+               AnalysisEngineManagement aem = ae.getManagementInterface();
+           dumpComponentStatistics(out, 0, aem);
+       }
+
+       private static void dumpComponentStatistics(PrintStream out, int level, 
AnalysisEngineManagement aem) {
+               String indent = "";
+           for (int i = 0; i < level; i++) {
+               indent += "  ";
+           }
+           out.println(indent+aem.getName()+": "+aem.getAnalysisTime()+"ms, ");
+           for (AnalysisEngineManagement childAem : 
(Iterable<AnalysisEngineManagement>) (aem.getComponents().values())) {
+               dumpComponentStatistics(out, level+1, childAem);
+           }
+       }
 }


Reply via email to