LMMS
Loading...
Searching...
No Matches
juce_PerformanceCounter.cpp
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 The code included in this file is provided under the terms of the ISC license
11 http://www.isc.org/downloads/software-support-policy/isc-license. Permission
12 To use, copy, modify, and/or distribute this software for any purpose with or
13 without fee is hereby granted provided that the above copyright notice and
14 this permission notice appear in all copies.
15
16 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
17 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
18 DISCLAIMED.
19
20 ==============================================================================
21*/
22
23namespace juce
24{
25
26static void appendToFile (const File& f, const String& s)
27{
28 if (f.getFullPathName().isNotEmpty())
29 {
31
32 if (! out.failedToOpen())
33 out << s << newLine;
34 }
35}
36
37PerformanceCounter::PerformanceCounter (const String& name, int runsPerPrintout, const File& loggingFile)
38 : runsPerPrint (runsPerPrintout), startTime (0), outputFile (loggingFile)
39{
40 stats.name = name;
41 appendToFile (outputFile, "**** Counter for \"" + name + "\" started at: " + Time::getCurrentTime().toString (true, true));
42}
43
49
54
60
61void PerformanceCounter::Statistics::addResult (double elapsed) noexcept
62{
63 if (numRuns == 0)
64 {
65 maximumSeconds = elapsed;
66 minimumSeconds = elapsed;
67 }
68 else
69 {
72 }
73
74 ++numRuns;
75 totalSeconds += elapsed;
76}
77
78static String timeToString (double secs)
79{
80 return String ((int64) (secs * (secs < 0.01 ? 1000000.0 : 1000.0) + 0.5))
81 + (secs < 0.01 ? " microsecs" : " millisecs");
82}
83
85{
87
88 s << "Performance count for \"" << name << "\" over " << numRuns << " run(s)" << newLine
89 << "Average = " << timeToString (averageSeconds)
90 << ", minimum = " << timeToString (minimumSeconds)
91 << ", maximum = " << timeToString (maximumSeconds)
92 << ", total = " << timeToString (totalSeconds);
93
94 return s.toString();
95}
96
101
103{
105
106 if (stats.numRuns < runsPerPrint)
107 return false;
108
110 return true;
111}
112
120
122{
124 stats.clear();
125
126 if (s.numRuns > 0)
127 s.averageSeconds = s.totalSeconds / (float) s.numRuns;
128
129 return s;
130}
131
132} // namespace juce
Type jmin(const Type a, const Type b)
Definition MathsFunctions.h:60
Type jmax(const Type a, const Type b)
Definition MathsFunctions.h:48
#define noexcept
Definition DistrhoDefines.h:72
Definition juce_File.h:45
Definition juce_FileOutputStream.h:35
static void JUCE_CALLTYPE writeToLog(const String &message)
Definition juce_Logger.cpp:40
Definition juce_MemoryOutputStream.h:36
Statistics stats
Definition juce_PerformanceCounter.h:114
int64 runsPerPrint
Definition juce_PerformanceCounter.h:115
bool stop()
Definition juce_PerformanceCounter.cpp:102
int64 startTime
Definition juce_PerformanceCounter.h:115
~PerformanceCounter()
Definition juce_PerformanceCounter.cpp:44
File outputFile
Definition juce_PerformanceCounter.h:116
Statistics getStatisticsAndReset()
Definition juce_PerformanceCounter.cpp:121
PerformanceCounter(const String &counterName, int runsPerPrintout=100, const File &loggingFile=File())
Definition juce_PerformanceCounter.cpp:37
void start() noexcept
Definition juce_PerformanceCounter.cpp:97
void printStatistics()
Definition juce_PerformanceCounter.cpp:113
Definition juce_String.h:53
static Time JUCE_CALLTYPE getCurrentTime() noexcept
Definition juce_Time.cpp:233
static double highResolutionTicksToSeconds(int64 ticks) noexcept
Definition juce_Time.cpp:293
static int64 getHighResolutionTicks() noexcept
Definition juce_linux_SystemStats.cpp:313
unsigned s
Definition inflate.c:1555
unsigned f
Definition inflate.c:1572
static const char * name
Definition pugl.h:1582
float out
Definition lilv_test.c:1461
Definition carla_juce.cpp:31
NewLine newLine
Definition juce_String.cpp:28
juce::String toString(const Steinberg::char8 *string) noexcept
Definition juce_VST3Common.h:159
long long int64
Definition juce_MathsFunctions.h:54
static String timeToString(double secs)
Definition juce_PerformanceCounter.cpp:78
static void appendToFile(const File &f, const String &s)
Definition juce_PerformanceCounter.cpp:26
Definition juce_PerformanceCounter.h:93
String name
Definition juce_PerformanceCounter.h:101
void addResult(double elapsed) noexcept
Definition juce_PerformanceCounter.cpp:61
double totalSeconds
Definition juce_PerformanceCounter.h:105
double minimumSeconds
Definition juce_PerformanceCounter.h:104
double maximumSeconds
Definition juce_PerformanceCounter.h:103
void clear() noexcept
Definition juce_PerformanceCounter.cpp:55
String toString() const
Definition juce_PerformanceCounter.cpp:84
int64 numRuns
Definition juce_PerformanceCounter.h:106
Statistics() noexcept
Definition juce_PerformanceCounter.cpp:50
double averageSeconds
Definition juce_PerformanceCounter.h:102