diff options
author | Carl Hetherington <carl@carlh.net> | 2012-01-14 22:02:59 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2012-01-14 22:02:59 +0000 |
commit | b087721d8aaf9470833414d01a72d826162946ab (patch) | |
tree | dc700fbb71685ab54eaa70b03ab53f35120f6155 /libs/ardour/cycle_timer.cc | |
parent | d4bab8aeed61d7de331d5fb10230de78edfd423b (diff) |
Add some debug code to time things in the process
thread(s).
git-svn-id: svn://localhost/ardour2/branches/3.0@11246 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/cycle_timer.cc')
-rw-r--r-- | libs/ardour/cycle_timer.cc | 55 |
1 files changed, 54 insertions, 1 deletions
diff --git a/libs/ardour/cycle_timer.cc b/libs/ardour/cycle_timer.cc index 7a6b1fcab2..02d1abb930 100644 --- a/libs/ardour/cycle_timer.cc +++ b/libs/ardour/cycle_timer.cc @@ -18,17 +18,19 @@ */ #include <cstdio> +#include <fstream> #include "pbd/error.h" #include "ardour/cycle_timer.h" #include "i18n.h" +using namespace std; using namespace PBD; float CycleTimer::cycles_per_usec = 0; float -CycleTimer::get_mhz() +get_mhz() { FILE *f; @@ -72,3 +74,54 @@ CycleTimer::get_mhz() /*NOTREACHED*/ return 0.0f; } + +StoringTimer::StoringTimer (int N) +{ + _point = new int[N]; + _value = new cycles_t[N]; + _ref = new cycles_t[N]; + _max_points = N; + _points = 0; +} + + +void +StoringTimer::dump (string const & file) +{ + ofstream f (file.c_str ()); + + f << min (_points, _max_points) << "\n"; + f << get_mhz () << "\n"; + for (int i = 0; i < min (_points, _max_points); ++i) { + f << _point[i] << " " << _ref[i] << " " << _value[i] << "\n"; + } +} + +void +StoringTimer::ref () +{ + _current_ref = get_cycles (); +} + +void +StoringTimer::check (int p) +{ + if (_points == _max_points) { + ++_points; + return; + } else if (_points > _max_points) { + return; + } + + _point[_points] = p; + _value[_points] = get_cycles (); + _ref[_points] = _current_ref; + + ++_points; +} + +#ifdef PT_TIMING +StoringTimer ST (64 * 1024); +#endif + + |