OpenShot Audio Library | OpenShotAudio
0.3.2
Loading...
Searching...
No Matches
juce_PerformanceCounter.h
1
/*
2
==============================================================================
3
4
This file is part of the JUCE library.
5
Copyright (c) 2017 - ROLI Ltd.
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
23
namespace
juce
24
{
25
26
//==============================================================================
49
class
JUCE_API
PerformanceCounter
50
{
51
public
:
52
//==============================================================================
61
PerformanceCounter
(
const
String
&
counterName
,
62
int
runsPerPrintout
= 100,
63
const
File
&
loggingFile
=
File
());
64
66
~PerformanceCounter
();
67
68
//==============================================================================
72
void
start()
noexcept
;
73
81
bool
stop();
82
89
void
printStatistics();
90
92
struct
Statistics
93
{
94
Statistics
()
noexcept
;
95
96
void
clear()
noexcept
;
97
String
toString()
const
;
98
99
void
addResult (
double
elapsed
)
noexcept
;
100
101
String
name;
102
double
averageSeconds;
103
double
maximumSeconds;
104
double
minimumSeconds;
105
double
totalSeconds;
106
int64
numRuns;
107
};
108
110
Statistics
getStatisticsAndReset();
111
112
private
:
113
//==============================================================================
114
Statistics
stats;
115
int64
runsPerPrint, startTime;
116
File
outputFile;
117
118
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (
PerformanceCounter
)
119
};
120
121
122
//==============================================================================
143
class
JUCE_API
ScopedTimeMeasurement
144
{
145
public
:
146
ScopedTimeMeasurement
(
double
&
resultInSeconds
)
noexcept
147
: result (
resultInSeconds
)
148
{
149
result = 0.0;
150
}
151
152
~ScopedTimeMeasurement
()
153
{
154
static
auto
scaler = 1.0 /
static_cast<
double
>
(Time::getHighResolutionTicksPerSecond());
155
result =
static_cast<
double
>
(Time::getHighResolutionTicks() - startTimeTicks) * scaler;
156
}
157
158
private
:
159
int64
startTimeTicks = Time::getHighResolutionTicks();
160
double
& result;
161
162
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (
ScopedTimeMeasurement
)
163
};
164
165
}
// namespace juce
juce::Array
Definition
juce_Array.h:56
juce::File
Definition
juce_File.h:41
juce::PerformanceCounter
Definition
juce_PerformanceCounter.h:50
juce::ScopedTimeMeasurement
Definition
juce_PerformanceCounter.h:144
juce::String
Definition
juce_String.h:39
juce::PerformanceCounter::Statistics
Definition
juce_PerformanceCounter.h:93
JuceLibraryCode
modules
juce_core
time
juce_PerformanceCounter.h
Generated by
1.9.8