diff options
Diffstat (limited to 'thirdparty/windows/include/coin/IpTimedTask.hpp')
-rw-r--r-- | thirdparty/windows/include/coin/IpTimedTask.hpp | 260 |
1 files changed, 146 insertions, 114 deletions
diff --git a/thirdparty/windows/include/coin/IpTimedTask.hpp b/thirdparty/windows/include/coin/IpTimedTask.hpp index 3533708..d79469b 100644 --- a/thirdparty/windows/include/coin/IpTimedTask.hpp +++ b/thirdparty/windows/include/coin/IpTimedTask.hpp @@ -1,114 +1,146 @@ -// Copyright (C) 2006 International Business Machines and others. -// All Rights Reserved. -// This code is published under the Common Public License. -// -// $Id: IpTimedTask.hpp 1430 2009-04-20 20:58:25Z andreasw $ -// -// Authors: Andreas Waechter IBM 2005-09-19 - -#ifndef __IPTIMEDTASK_HPP__ -#define __IPTIMEDTASK_HPP__ - -#include "IpUtils.hpp" - -namespace Ipopt -{ - /** This class is used to collect timing information for a - * particular task. */ - class TimedTask - { - public: - /**@name Constructors/Destructors */ - //@{ - /** Default constructor. */ - TimedTask() - : - total_time_(0.), - start_called_(false), - end_called_(true) - {} - - /** Default destructor */ - ~TimedTask() - {} - //@} - - /** Method for resetting time to zero. */ - void Reset() - { - total_time_ = 0.; - start_called_ = false; - end_called_ = true; - } - - /** Method that is called before execution of the task. */ - void Start() - { - DBG_ASSERT(end_called_); - DBG_ASSERT(!start_called_); - end_called_ = false; - start_called_ = true; - start_time_ = CpuTime(); - } - - /** Method that is called after execution of the task. */ - void End() - { - DBG_ASSERT(!end_called_); - DBG_ASSERT(start_called_); - end_called_ = true; - start_called_ = false; - total_time_ += CpuTime() - start_time_; - } - - /** Method that is called after execution of the task for which - * timing might have been started. This only updates the timing - * if the timing has indeed been conducted. This is useful to - * stop timing after catching exceptions. */ - void EndIfStarted() - { - if (start_called_) { - end_called_ = true; - start_called_ = false; - total_time_ += CpuTime() - start_time_; - } - DBG_ASSERT(end_called_); - } - - /** Method returning total time spend for task so far. */ - Number TotalTime() const - { - DBG_ASSERT(end_called_); - return total_time_; - } - - private: - /**@name Default Compiler Generated Methods (Hidden to avoid - * implicit creation/calling). These methods are not - * implemented and we do not want the compiler to implement them - * for us, so we declare them private and do not define - * them. This ensures that they will not be implicitly - * created/called. */ - //@{ - /** Copy Constructor */ - TimedTask(const TimedTask&); - - /** Overloaded Equals Operator */ - void operator=(const TimedTask&); - //@} - - /** Time at beginning of task. */ - Number start_time_; - /** Total time for task measured so far. */ - Number total_time_; - - /** @name fields for debugging */ - //@{ - bool start_called_; - bool end_called_; - //@} - - }; -} // namespace Ipopt - -#endif +// Copyright (C) 2006, 2009 International Business Machines and others.
+// All Rights Reserved.
+// This code is published under the Eclipse Public License.
+//
+// $Id: IpTimedTask.hpp 1861 2010-12-21 21:34:47Z andreasw $
+//
+// Authors: Andreas Waechter IBM 2005-09-19
+
+#ifndef __IPTIMEDTASK_HPP__
+#define __IPTIMEDTASK_HPP__
+
+#include "IpUtils.hpp"
+
+namespace Ipopt
+{
+ /** This class is used to collect timing information for a
+ * particular task. */
+ class TimedTask
+ {
+ public:
+ /**@name Constructors/Destructors */
+ //@{
+ /** Default constructor. */
+ TimedTask()
+ :
+ total_cputime_(0.),
+ total_systime_(0.),
+ total_walltime_(0.),
+ start_called_(false),
+ end_called_(true)
+ {}
+
+ /** Default destructor */
+ ~TimedTask()
+ {}
+ //@}
+
+ /** Method for resetting time to zero. */
+ void Reset()
+ {
+ total_cputime_ = 0.;
+ total_systime_ = 0.;
+ total_walltime_ = 0.;
+ start_called_ = false;
+ end_called_ = true;
+ }
+
+ /** Method that is called before execution of the task. */
+ void Start()
+ {
+ DBG_ASSERT(end_called_);
+ DBG_ASSERT(!start_called_);
+ end_called_ = false;
+ start_called_ = true;
+ start_cputime_ = CpuTime();
+ start_systime_ = SysTime();
+ start_walltime_ = WallclockTime();
+ }
+
+ /** Method that is called after execution of the task. */
+ void End()
+ {
+ DBG_ASSERT(!end_called_);
+ DBG_ASSERT(start_called_);
+ end_called_ = true;
+ start_called_ = false;
+ total_cputime_ += CpuTime() - start_cputime_;
+ total_systime_ += SysTime() - start_systime_;
+ total_walltime_ += WallclockTime() - start_walltime_;
+ }
+
+ /** Method that is called after execution of the task for which
+ * timing might have been started. This only updates the timing
+ * if the timing has indeed been conducted. This is useful to
+ * stop timing after catching exceptions. */
+ void EndIfStarted()
+ {
+ if (start_called_) {
+ end_called_ = true;
+ start_called_ = false;
+ total_cputime_ += CpuTime() - start_cputime_;
+ total_systime_ += SysTime() - start_systime_;
+ total_walltime_ += WallclockTime() - start_walltime_;
+ }
+ DBG_ASSERT(end_called_);
+ }
+
+ /** Method returning total CPU time spend for task so far. */
+ Number TotalCpuTime() const
+ {
+ DBG_ASSERT(end_called_);
+ return total_cputime_;
+ }
+
+ /** Method returning total system time spend for task so far. */
+ Number TotalSysTime() const
+ {
+ DBG_ASSERT(end_called_);
+ return total_systime_;
+ }
+
+ /** Method returning total wall clock time spend for task so far. */
+ Number TotalWallclockTime() const
+ {
+ DBG_ASSERT(end_called_);
+ return total_walltime_;
+ }
+
+ private:
+ /**@name Default Compiler Generated Methods (Hidden to avoid
+ * implicit creation/calling). These methods are not
+ * implemented and we do not want the compiler to implement them
+ * for us, so we declare them private and do not define
+ * them. This ensures that they will not be implicitly
+ * created/called. */
+ //@{
+ /** Copy Constructor */
+ TimedTask(const TimedTask&);
+
+ /** Overloaded Equals Operator */
+ void operator=(const TimedTask&);
+ //@}
+
+ /** CPU time at beginning of task. */
+ Number start_cputime_;
+ /** Total CPU time for task measured so far. */
+ Number total_cputime_;
+ /** System time at beginning of task. */
+ Number start_systime_;
+ /** Total system time for task measured so far. */
+ Number total_systime_;
+ /** Wall clock time at beginning of task. */
+ Number start_walltime_;
+ /** Total wall clock time for task measured so far. */
+ Number total_walltime_;
+
+ /** @name fields for debugging */
+ //@{
+ bool start_called_;
+ bool end_called_;
+ //@}
+
+ };
+} // namespace Ipopt
+
+#endif
|