26 static void appendToFile (
const File& f,
const String& s)
28 if (f.getFullPathName().isNotEmpty())
30 FileOutputStream out (f);
32 if (! out.failedToOpen())
38 : runsPerPrint (runsPerPrintout), startTime (0), outputFile (loggingFile)
41 appendToFile (outputFile,
"**** Counter for \"" + name +
"\" started at: " +
Time::getCurrentTime().toString (
true,
true));
49 PerformanceCounter::Statistics::Statistics() noexcept
50 : averageSeconds(), maximumSeconds(), minimumSeconds(), totalSeconds(), numRuns()
54 void PerformanceCounter::Statistics::clear() noexcept
56 averageSeconds = maximumSeconds = minimumSeconds = totalSeconds = 0;
60 void PerformanceCounter::Statistics::addResult (
double elapsed) noexcept
64 maximumSeconds = elapsed;
65 minimumSeconds = elapsed;
69 maximumSeconds = jmax (maximumSeconds, elapsed);
70 minimumSeconds = jmin (minimumSeconds, elapsed);
74 totalSeconds += elapsed;
77 static String timeToString (
double secs)
79 return String ((int64) (secs * (secs < 0.01 ? 1000000.0 : 1000.0) + 0.5))
80 + (secs < 0.01 ?
" microsecs" :
" millisecs");
83 String PerformanceCounter::Statistics::toString()
const
87 s <<
"Performance count for \"" << name <<
"\" over " << numRuns <<
" run(s)" << newLine
88 <<
"Average = " << timeToString (averageSeconds)
89 <<
", minimum = " << timeToString (minimumSeconds)
90 <<
", maximum = " << timeToString (maximumSeconds)
91 <<
", total = " << timeToString (totalSeconds);
105 if (stats.numRuns < runsPerPrint)
117 appendToFile (outputFile, desc);
126 s.averageSeconds = s.totalSeconds / s.numRuns;