mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-08-22 08:43:54 +08:00
external folder
This commit is contained in:
+146
@@ -0,0 +1,146 @@
|
||||
// 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
|
||||
Reference in New Issue
Block a user