summaryrefslogtreecommitdiffstats
path: root/src/libavoid/timer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libavoid/timer.h')
-rw-r--r--src/libavoid/timer.h74
1 files changed, 39 insertions, 35 deletions
diff --git a/src/libavoid/timer.h b/src/libavoid/timer.h
index 9cab6d7ff..17a07d5e8 100644
--- a/src/libavoid/timer.h
+++ b/src/libavoid/timer.h
@@ -3,7 +3,7 @@
*
* libavoid - Fast, Incremental, Object-avoiding Line Router
*
- * Copyright (C) 2004-2008 Monash University
+ * Copyright (C) 2004-2013 Monash University
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -19,81 +19,85 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
- * Author(s): Michael Wybrow <mjwybrow@users.sourceforge.net>
+ * Author(s): Michael Wybrow
*/
-#ifndef PROFILE_H
-#define PROFILE_H
+#ifndef AVOID_TIMER_H
+#define AVOID_TIMER_H
#include <ctime>
namespace Avoid {
+//#define AVOID_PROFILE
-#ifdef NOTIMERS
+#ifndef AVOID_PROFILE
- #define register_timer(t) do {} while(0)
- #define regstart_timer(t) do {} while(0)
- #define start_timer() do {} while(0)
- #define stop_timer() do {} while(0)
+ #define TIMER_START(r, t) do {} while(0)
+ #define TIMER_STOP(r) do {} while(0)
+ #define TIMER_VAR_ADD(r, n, v) do {} while(0)
+ #define TIMER_VAR_MAX(r, n, v) do {} while(0)
#else
- #define register_timer(t) router->timers.Register(t)
- #define regstart_timer(t) router->timers.Register(t, timerStart)
- #define start_timer() router->timers.Start()
- #define stop_timer() router->timers.Stop()
-
-#endif
+ #define TIMER_START(r, t) r->timers.initialise(t); r->timers.start()
+ #define TIMER_STOP(r) r->timers.stop()
+ #define TIMER_VAR_ADD(r, n, v) r->timers.varIncrement(n, v);
+ #define TIMER_VAR_MAX(r, n, v) r->timers.varMax(n, v)
typedef unsigned long long int bigclock_t;
enum TimerIndex
{
- tmNon = 0,
tmAdd,
tmDel,
tmMov,
tmPth,
- tmSev,
tmOrthogGraph,
tmOrthogRoute,
tmOrthogCentre,
tmOrthogNudge,
+ tmHyperedgeForest,
+ tmHyperedgeMTST,
+ tmHyperedgeImprove,
+ tmHyperedgeAlt,
tmCount
};
-
static const bool timerStart = true;
static const bool timerDelay = false;
+static const size_t TIMER_VARIABLES_COUNT = 2;
class Timer
{
public:
Timer();
- void Register(const TimerIndex t, const bool start = timerDelay);
- void Start(void);
- void Stop(void);
- void Reset(void);
- void Print(TimerIndex, FILE *fp);
- void PrintAll(FILE *fp);
+ void initialise(const TimerIndex t);
+ void start(void);
+ void stop(void);
+ void reset(void);
+ void varIncrement(size_t i, unsigned int val);
+ void varMax(size_t i, unsigned int val);
+
+ void print(TimerIndex, FILE *fp);
+ void printAll(FILE *fp);
+ void printHyperedgePaper(FILE *fp);
private:
- clock_t cStart[tmCount];
- bigclock_t cTotal[tmCount];
- bigclock_t cPath[tmCount];
- int cTally[tmCount];
- int cPathTally[tmCount];
- clock_t cMax[tmCount];
- clock_t cPathMax[tmCount];
-
- bool running;
- long count;
- TimerIndex type, lasttype;
+ clock_t m_start_time[tmCount];
+ bigclock_t m_total_time[tmCount];
+ int m_tally[tmCount];
+ clock_t m_max_time[tmCount];
+ unsigned int m_variables[tmCount][TIMER_VARIABLES_COUNT];
+
+ bool m_is_running;
+ TimerIndex m_type;
+ TimerIndex m_last_type;
};
+#endif
}