protected <T extends ProcessTraceEvent> T findCorrespondingEvent(List<T> aEventList, T aEvent) { Iterator<T> it = aEventList.iterator(); while (it.hasNext()) { T evt = it.next(); if (evt.getComponentName().equals(aEvent.getComponentName()) && evt.getType().equals(aEvent.getType())) { return evt; } } return null; }
public AnalysisEnginePerformanceReports(ProcessTrace aProcessTrace) { mProcessTrace = aProcessTrace; pctFormat = NumberFormat.getPercentInstance(); pctFormat.setMaximumFractionDigits(2); for (ProcessTraceEvent evt : aProcessTrace.getEvents()) { if (ProcessTraceEvent.ANALYSIS_ENGINE.equals(evt.getType()) || ProcessTraceEvent.SERVICE_CALL.equals(evt.getType())) { mTotalTime += evt.getDuration(); } addEventData(evt); } }
/** * Copy given component events. * * @param aEvType - * event type * @param aList - * list of events to copy * @param aPTr - * @throws IOException - */ private void copyComponentEvents(String aEvType, List aList, ProcessTrace aPTr) throws IOException { String typeS; for (int i = 0; i < aList.size(); i++) { ProcessTraceEvent prEvent = (ProcessTraceEvent) aList.get(i); typeS = prEvent.getType(); if (aEvType != null && aEvType.equals(typeS)) { aPTr.addEvent(prEvent); } } }
/** * Copy component events. * * @param aEvType the a ev type * @param aList the a list * @param aPTr the a P tr * @throws IOException Signals that an I/O exception has occurred. */ /* * Copies events of a given type found in the list to a provided ProcessTrace instance * * @param - aEvType, event type to copy from the list @param - List, list of events @param * ProcessTrace, where to copy events of a given type * */ private void copyComponentEvents(String aEvType, List aList, ProcessTrace aPTr) throws IOException { for (int i = 0; i < aList.size(); i++) { ProcessTraceEvent prEvent = (ProcessTraceEvent) aList.get(i); if (aEvType != null && aEvType.equals(prEvent.getType())) { aPTr.addEvent(prEvent); } } }
protected ProcessTraceEvent getEvent(List<ProcessTraceEvent> aEvents, String aComponentName, String aType) { Iterator<ProcessTraceEvent> it = aEvents.iterator(); while (it.hasNext()) { ProcessTraceEvent event = it.next(); if (aComponentName.equals(event.getComponentName()) && aType.equals(event.getType())) { return event; } else { ProcessTraceEvent matchingSubEvt = getEvent(event.getSubEvents(), aComponentName, aType); if (matchingSubEvt != null) { return matchingSubEvt; } } } return null; }
/** * Utility method used by getEventsByType(String) * * @param aEvent - * @param aType - * @param aRecurseAfterMatch - * @param aResultList - */ protected void getEventsByType(ProcessTraceEvent aEvent, String aType, boolean aRecurseAfterMatch, List<ProcessTraceEvent> aResultList) { if (aType.equals(aEvent.getType())) { aResultList.add(aEvent); if (!aRecurseAfterMatch) { return; } } // recurse into child events for (ProcessTraceEvent event : aEvent.getSubEvents()) { getEventsByType(event, aType, aRecurseAfterMatch, aResultList); } }
public void collectionProcessComplete() { if (logger != null) logger.logString(df.format(new Date()) + "\tCollection completed"); synchronized (this) { if (this.isProcessing) { this.notify(); if (logger != null) { StringBuilder reportContent = new StringBuilder(); for (ProcessTraceEvent event : mCPE.getPerformanceReport().getEvents()) { String componentName = event.getComponentName(); componentName = componentName.substring(componentName.lastIndexOf(".") + 1); String eventType = event.getType(); if (eventType.startsWith("End")) reportContent.append("\t\t" + event.getType() + "\t" + event.getDuration() + " ms\n"); else reportContent.append(componentName + "\t" + event.getType() + "\t" + event.getDuration() + " ms\n"); } this.logger.collectionProcessComplete(reportContent.toString()); } } this.isProcessing = false; } } }
/** * Returns the total duration of a given event. * * @param aPT - * Event container * @param eventName - * name of the event for which the time is needed * @return - total duration of an event */ public synchronized static long extractTime(ProcessTrace aPT, String eventName) { List aList = aPT.getEvents(); int counter = 0; while (aList != null && aList.size() > 0 && counter < aList.size()) { ProcessTraceEvent pte = (ProcessTraceEvent) aList.get(counter++); if (pte == null) { return 0; } else if (eventName == null || eventName.equals(pte.getDescription())) { return pte.getDurationExcludingSubEvents(); } else { List subEvents = pte.getSubEvents(); for (int i = 0; subEvents != null && i < subEvents.size(); i++) { if (eventName.equals(((ProcessTraceEvent) subEvents.get(i)).getType())) { return ((ProcessTraceEvent) subEvents.get(i)).getDurationExcludingSubEvents(); } } } } return 0; }
reportContent += "Processing Time\t" + processingTime + "\t"; for (ProcessTraceEvent event : mCPE.getPerformanceReport().getEvents()) { reportContent += event.getComponentName() + "-" + event.getType() + "\t" + event.getDuration() + "\t";
whileLoop: while (it.hasNext()) { ProcessTraceEvent evt = it.next(); String type = evt.getType(); for (int i = 0; i < aEventTypes.length; i++) { if (aEventTypes[i].equals(type)) {
/** * Helper method to help build the CPM report. * * @param aEvent the a event * @param aTotalTime the a total time */ public void buildEventTree(ProcessTraceEvent aEvent, int aTotalTime) { // Skip reporting the CPM time.This time has already been acquired by summing up // times from all individual components if ("CPM".equals(aEvent.getComponentName())) { return; } int duration = aEvent.getDuration(); float pct = (float) ((duration * 100 * 10) / aTotalTime) / 10; String type = (String) mEventTypeMap.get(aEvent.getType()); if (type == null) { type = aEvent.getType(); } if (System.getProperty("DEBUG") != null) UIMAFramework.getLogger(this.getClass()).log( Level.FINEST, "" + pct + "% (" + duration + "ms) - " + aEvent.getComponentName() + " (" + type + ")"); Iterator it = aEvent.getSubEvents().iterator(); while (it.hasNext()) { ProcessTraceEvent event = (ProcessTraceEvent) it.next(); buildEventTree(event, aTotalTime); } }
protected void addEventData(ProcessTraceEvent aEvent) { if (ProcessTraceEvent.ANALYSIS.equals(aEvent.getType())) { mAnalysisTime += aEvent.getDuration(); String componentName = aEvent.getComponentName(); mAnnotatorAnalysisTimes.put(componentName, aEvent.getDuration()); } else if (ProcessTraceEvent.ANALYSIS_ENGINE.equals(aEvent.getType())) { mFrameworkOverhead += (duration - subEventDuration); } else if (ProcessTraceEvent.SERVICE.equals(aEvent.getType())) { mServiceWrapperOverhead += (duration - subEventDuration); } else if (ProcessTraceEvent.SERVICE_CALL.equals(aEvent.getType())) {
/** * Dumps all events in the process trace object. * * @param aPTr - * event container */ public static void dumpEvents(ProcessTrace aPTr) { List aList = aPTr.getEvents(); for (int i = 0; i < aList.size(); i++) { ProcessTraceEvent prEvent = (ProcessTraceEvent) aList.get(i); String aEvType = prEvent.getType(); if (System.getProperty("DEBUG_EVENTS") != null) { if (UIMAFramework.getLogger().isLoggable(Level.FINEST)) { UIMAFramework.getLogger(CPMUtils.class).log( Level.FINEST, "Returning Report With Event::" + aEvType + " For Component:::" + prEvent.getComponentName() + " Duration:::" + prEvent.getDurationExcludingSubEvents()); } } } }
ProcessTraceEvent prEvent = (ProcessTraceEvent) lst.get(i); compNameS = prEvent.getComponentName(); typeS = prEvent.getType(); dur = prEvent.getDurationExcludingSubEvents(); totDur = prEvent.getDuration();