13
0

update CycleTimer to utilize NDEBUG and PBD::DEBUG so that we can leave them in place and use them at run time

git-svn-id: svn://localhost/ardour2/branches/3.0@10840 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2011-11-30 15:24:31 +00:00
parent 6fe7e0dea1
commit 51138ef75b
3 changed files with 21 additions and 6 deletions

View File

@ -24,24 +24,37 @@
#include <iostream>
#include "ardour/cycles.h"
#include "ardour/debug.h"
class CycleTimer {
private:
static float cycles_per_usec;
#ifndef NDEBUG
cycles_t _entry;
cycles_t _exit;
std::string _name;
#endif
public:
CycleTimer(std::string name) : _name (name){
if (cycles_per_usec == 0) {
cycles_per_usec = get_mhz ();
CycleTimer(const std::string& name) {
#ifndef NDEBUG
if (PBD::debug_bits & PBD::DEBUG::CycleTimers) {
_name = name;
if (cycles_per_usec == 0) {
cycles_per_usec = get_mhz ();
}
_entry = get_cycles();
}
_entry = get_cycles();
#endif
}
~CycleTimer() {
_exit = get_cycles();
std::cerr << _name << ": " << (float) (_exit - _entry) / cycles_per_usec << " (" << _entry << ", " << _exit << ')' << std::endl;
#ifndef NDEBUG
if (PBD::debug_bits & PBD::DEBUG::CycleTimers) {
_exit = get_cycles();
std::cerr << _name << ": " << (float) (_exit - _entry) / cycles_per_usec << " (" << _entry << ", " << _exit << ')' << std::endl;
}
#endif
}
static float get_mhz ();

View File

@ -54,6 +54,7 @@ namespace PBD {
extern uint64_t PluginManager;
extern uint64_t AudioUnits;
extern uint64_t ControlProtocols;
extern uint64_t CycleTimers;
}
}

View File

@ -51,4 +51,5 @@ uint64_t PBD::DEBUG::CaptureAlignment = PBD::new_debug_bit ("capturealignment");
uint64_t PBD::DEBUG::PluginManager = PBD::new_debug_bit ("pluginmanager");
uint64_t PBD::DEBUG::AudioUnits = PBD::new_debug_bit ("audiounits");
uint64_t PBD::DEBUG::ControlProtocols = PBD::new_debug_bit ("controlprotocols");
uint64_t PBD::DEBUG::CycleTimers = PBD::new_debug_bit ("cycletimers");