/** * Return a string that describes the statistics for the top n entries, sorted by descending * order of total time spent dealing with the query. This will always include the totals entry * in the first position. * * @param n the desired number of entries to describe * @return a string describing the statistics for the top n entries */ public synchronized String toStringTop(int n) { StringBuilder out = new StringBuilder(); List<Entry> list = entries(); if (list.isEmpty()) return "<no queries executed>"; Collections.sort(list, TOTAL_TIME_DESCENDING); int maxCountLength = COUNT_FORMAT.format(list.get(0).numQueries).length(); double totalDuration = list.get(0).queryTime; for (Entry entry : list.subList(0, Math.min(n, list.size()))) out.append(entry.toString(maxCountLength, totalDuration)).append('\n'); return out.toString(); }
public synchronized String toString(int maxCountLength, double totalDuration) { String formattedCount = String.format("%" + maxCountLength + "s", COUNT_FORMAT.format(numQueries)); return FULL_ENTRY_FORMAT.format( new Object[] { query == null ? "TOTALS" : query, formattedCount, (queriesPrepared - queriesCompiled) / (double) queriesPrepared, queryTime, queryCompilationTime, queryPreparationTime, queryRunTime, queryTime * 1000 / numQueries, queriesCompiled == 0 ? 0 : queryCompilationTime * 1000 / queriesCompiled, queriesPrepared == 0 ? 0 : queryPreparationTime * 1000 / queriesPrepared, queriesRun == 0 ? 0 : queryRunTime * 1000 / queriesRun, queryTime / totalDuration }); }