/** Print total and optimal critical paths if available. */ public void printCriticalPaths() { CriticalPathEntry totalPath = criticalPathStats.getTotalPath(); printCriticalPath("Critical path", totalPath); // In critical path components we do not record scheduling delay data so it does not make // sense to differentiate it. if (!totalPath.isComponent()) { printCriticalPath( "Critical path excluding scheduling delays", criticalPathStats.getOptimalPath()); } }
public void printTimingBreakdown() { CriticalPathEntry totalPath = criticalPathStats.getTotalPath(); CriticalPathEntry optimalPath = criticalPathStats.getOptimalPath(); if (totalPath != null) { if (!totalPath.isComponent()) { printCriticalPathTimingBreakdown(totalPath, optimalPath); } } else { lnPrint("Critical path not available because no action graph was generated."); } }
private void printCriticalPath(String title, CriticalPathEntry path) { lnPrintf("%s (%s):", title, TimeUtilities.prettyTime(path.cumulativeDuration)); boolean isComponent = path.isComponent(); if (isComponent) { lnPrintf("%6s %11s %8s %s", "Id", "Time", "Percentage", "Description"); } else { lnPrintf("%6s %11s %8s %8s %s", "Id", "Time", "Share", "Critical", "Description"); } long totalPathTime = path.cumulativeDuration; for (CriticalPathEntry pathEntry : criticalPathStats.getMiddlemanFilteredPath(path)) { String desc = pathEntry.task.getDescription().replace(':', ' '); if (isComponent) { lnPrintf( "%6d %11s %8s %s", pathEntry.task.id, TimeUtilities.prettyTime(pathEntry.duration), prettyPercentage((double) pathEntry.duration / totalPathTime), desc); } else { lnPrintf( "%6d %11s %8s %8s %s", pathEntry.task.id, TimeUtilities.prettyTime(pathEntry.duration), prettyPercentage((double) pathEntry.duration / totalPathTime), prettyPercentage((double) pathEntry.getCriticalTime() / totalPathTime), desc); } } MiddleManStatistics middleMan = MiddleManStatistics.create(path); if (middleMan.count > 0) { if (isComponent) { lnPrintf( " %11s %8s [%d middleman actions]", TimeUtilities.prettyTime(middleMan.duration), prettyPercentage((double) middleMan.duration / totalPathTime), middleMan.count); } else { lnPrintf( " %11s %8s %8s [%d middleman actions]", TimeUtilities.prettyTime(middleMan.duration), prettyPercentage((double) middleMan.duration / totalPathTime), prettyPercentage((double) middleMan.criticalTime / totalPathTime), middleMan.count); } } }
private void printCriticalPath(String title, CriticalPathEntry path) { lnPrintf("%s (%s):", title, TimeUtilities.prettyTime(path.cumulativeDuration)); boolean isComponent = path.isComponent(); if (isComponent) { lnPrintf("%6s %11s %8s %s", "Id", "Time", "Percentage", "Description"); } else { lnPrintf("%6s %11s %8s %8s %s", "Id", "Time", "Share", "Critical", "Description"); } long totalPathTime = path.cumulativeDuration; int middlemanCount = 0; long middlemanDuration = 0L; long middlemanCritTime = 0L; for (; path != null; path = path.next) { if (path.task.id < 0) { // Ignore fake actions. continue; } else if (path.task.getDescription().startsWith(MiddlemanAction.MIDDLEMAN_MNEMONIC + " ") || path.task.getDescription().startsWith("TargetCompletionMiddleman")) { // Aggregate middleman actions. middlemanCount++; middlemanDuration += path.duration; middlemanCritTime += path.getCriticalTime(); } else { String desc = path.task.getDescription().replace(':', ' '); if (isComponent) { lnPrintf( "%6d %11s %8s %s", path.task.id, TimeUtilities.prettyTime(path.duration), prettyPercentage((double) path.duration / totalPathTime), desc); } else { lnPrintf( "%6d %11s %8s %8s %s", path.task.id, TimeUtilities.prettyTime(path.duration), prettyPercentage((double) path.duration / totalPathTime), prettyPercentage((double) path.getCriticalTime() / totalPathTime), desc); } } } if (middlemanCount > 0) { if (isComponent) { lnPrintf( " %11s %8s [%d middleman actions]", TimeUtilities.prettyTime(middlemanDuration), prettyPercentage((double) middlemanDuration / totalPathTime), middlemanCount); } else { lnPrintf( " %11s %8s %8s [%d middleman actions]", TimeUtilities.prettyTime(middlemanDuration), prettyPercentage((double) middlemanDuration / totalPathTime), prettyPercentage((double) middlemanCritTime / totalPathTime), middlemanCount); } } }