Improve headless performance by not querying unused meters

Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
falkTX 2022-02-05 21:41:55 +00:00
parent ca3ea265f0
commit 0f66ba9b5b
No known key found for this signature in database
GPG key ID: CDBAA37ABC74FBA0

View file

@ -73,6 +73,7 @@ struct Engine::Internal {
double blockTime = 0.0; double blockTime = 0.0;
int blockFrames = 0; int blockFrames = 0;
#ifndef HEADLESS
// Meter // Meter
int meterCount = 0; int meterCount = 0;
double meterTotal = 0.0; double meterTotal = 0.0;
@ -80,6 +81,7 @@ struct Engine::Internal {
double meterLastTime = -INFINITY; double meterLastTime = -INFINITY;
double meterLastAverage = 0.0; double meterLastAverage = 0.0;
double meterLastMax = 0.0; double meterLastMax = 0.0;
#endif
// Parameter smoothing // Parameter smoothing
Module* smoothModule = NULL; Module* smoothModule = NULL;
@ -306,8 +308,10 @@ void Engine::clear_NoLock() {
void Engine::stepBlock(int frames) { void Engine::stepBlock(int frames) {
#ifndef HEADLESS
// Start timer before locking // Start timer before locking
double startTime = system::getTime(); double startTime = system::getTime();
#endif
SharedLock<SharedMutex> lock(internal->mutex); SharedLock<SharedMutex> lock(internal->mutex);
// Configure thread // Configure thread
@ -330,6 +334,7 @@ void Engine::stepBlock(int frames) {
internal->block++; internal->block++;
#ifndef HEADLESS
// Stop timer // Stop timer
double endTime = system::getTime(); double endTime = system::getTime();
double meter = (endTime - startTime) / (frames * internal->sampleTime); double meter = (endTime - startTime) / (frames * internal->sampleTime);
@ -347,6 +352,7 @@ void Engine::stepBlock(int frames) {
internal->meterTotal = 0.0; internal->meterTotal = 0.0;
internal->meterMax = 0.0; internal->meterMax = 0.0;
} }
#endif
} }
@ -434,12 +440,20 @@ double Engine::getBlockDuration() {
double Engine::getMeterAverage() { double Engine::getMeterAverage() {
#ifndef HEADLESS
return internal->meterLastAverage; return internal->meterLastAverage;
#else
return 0.0;
#endif
} }
double Engine::getMeterMax() { double Engine::getMeterMax() {
#ifndef HEADLESS
return internal->meterLastMax; return internal->meterLastMax;
#else
return 0.0;
#endif
} }