# HG changeset patch
# User alpar
# Date 1133894666 0
# Node ID 78b5ea23f0f1f91cda22dc4c78887960aef9ae58
# Parent 50d1d6acfcc24ff9ee0d93437d7a854d05891d69
Doc improvements
diff -r 50d1d6acfcc2 -r 78b5ea23f0f1 lemon/counter.h
--- a/lemon/counter.h Tue Dec 06 11:59:44 2005 +0000
+++ b/lemon/counter.h Tue Dec 06 18:44:26 2005 +0000
@@ -95,6 +95,7 @@
///This class makes it easier to count certain events. You can increment
///or decrement the counter using operator++ and operator--.
///A report is automatically printed on destruction.
+ ///\todo More doc
class Counter
{
std::string _title;
diff -r 50d1d6acfcc2 -r 78b5ea23f0f1 lemon/time_measure.h
--- a/lemon/time_measure.h Tue Dec 06 11:59:44 2005 +0000
+++ b/lemon/time_measure.h Tue Dec 06 18:44:26 2005 +0000
@@ -44,7 +44,8 @@
/// TimeStamp's can be added to or substracted from each other and
/// they can be pushed to a stream.
///
- /// In most cases, perhaps \ref Timer class is what you want to use instead.
+ /// In most cases, perhaps the \ref Timer or the \ref TimeReport
+ /// class is what you want to use instead.
///
///\author Alpar Juttner
@@ -193,6 +194,30 @@
return t*b;
}
+ ///Prints the time counters
+
+ ///Prints the time counters in the following form:
+ ///
+ /// u: XX.XXs s: XX.XXs cu: XX.XXs cs: XX.XXs real: XX.XXs
+ ///
+ /// where the values are the
+ /// \li \c u: user cpu time,
+ /// \li \c s: system cpu time,
+ /// \li \c cu: user cpu time of children,
+ /// \li \c cs: system cpu time of children,
+ /// \li \c real: real time.
+ /// \relates TimeStamp
+ inline std::ostream& operator<<(std::ostream& os,const TimeStamp &t)
+ {
+ long cls = sysconf(_SC_CLK_TCK);
+ os << "u: " << double(t.getTms().tms_utime)/cls <<
+ "s, s: " << double(t.getTms().tms_stime)/cls <<
+ "s, cu: " << double(t.getTms().tms_cutime)/cls <<
+ "s, cs: " << double(t.getTms().tms_cstime)/cls <<
+ "s, real: " << t.realTime() << "s";
+ return os;
+ }
+
///Class for measuring the cpu time and real time usage of the process
///Class for measuring the cpu time and real time usage of the process.
@@ -229,12 +254,11 @@
///Also, if you start and stop the timer very frequently, it could lead
///distorted results.
///
- ///The \ref Timer also counts the number of \ref start()
- ///executions, and is stops only after the same amount (or more)
- ///\ref stop() "stop()"s. This can be useful e.g. to compute the running time
- ///of recursive functions.
+ ///\note If you want to measure the running time of the execution of a certain
+ ///function, consider the usage of \ref TimeReport instead.
///
///\todo This shouldn't be Unix (Linux) specific.
+ ///\sa TimeReport
///
///\author Alpar Juttner
class Timer
@@ -252,16 +276,16 @@
///
Timer(bool run=true) :_running(run) {_reset();}
- ///Computes the ellapsed time
+ ///\name Control the state of the timer
+ ///Basically a Timer can be either running or stopped,
+ ///but it provides a bit finer control on the execution.
+ ///The \ref Timer also counts the number of \ref start()
+ ///executions, and is stops only after the same amount (or more)
+ ///\ref stop() "stop()"s. This can be useful e.g. to compute the running time
+ ///of recursive functions.
+ ///
- ///This conversion computes the ellapsed time
- ///
- operator TimeStamp () const
- {
- TimeStamp t;
- t.stamp();
- return _running?t-start_time:start_time;
- }
+ ///@{
///Reset and stop the time counters
@@ -352,6 +376,12 @@
start();
}
+ ///@}
+
+ ///\name Query Functions for the ellapsed time
+
+ ///@{
+
///Gives back the ellapsed user time of the process
double userTime() const
{
@@ -377,53 +407,87 @@
{
return operator TimeStamp().realTime();
}
+ ///Computes the ellapsed time
+ ///This conversion computes the ellapsed time, therefore you can print
+ ///the ellapsed time like this.
+ ///\code
+ /// Timer T;
+ /// doSomething();
+ /// std::cout << T << '\n';
+ ///\endcode
+ operator TimeStamp () const
+ {
+ TimeStamp t;
+ t.stamp();
+ return _running?t-start_time:start_time;
+ }
+
+
+ ///@}
};
///Same as \ref Timer but prints a report on destruction.
///Same as \ref Timer but prints a report on destruction.
- ///\todo Untested
+ ///This example shows its usage.
+ ///\code
+ /// void myAlg(ListGraph &g,int n)
+ /// {
+ /// TimeReport TR("Running time of myAlg: ");
+ /// ... //Here comes the algorithm
+ /// }
+ ///\endcode
+ ///
+ ///\sa Timer
+ ///\sa NoTimeReport
+ ///\todo There is no test case for this
class TimeReport : public Timer
{
std::string _title;
std::ostream &_os;
public:
///\e
-
- TimeReport(std::string title,std::ostream &os,bool run)
+
+ ///\param title This text will be printed before the ellapsed time.
+ ///\param os The stream to print the report to.
+ ///\param run Sets whether the timer should start immediately.
+
+ TimeReport(std::string title,std::ostream &os=std::cerr,bool run=true)
: Timer(run), _title(title), _os(os){}
+ ///\e Prints the ellapsed time on destruction.
~TimeReport()
{
- _os << _title << this << std::endl;
+ _os << _title << *this << std::endl;
}
};
- ///Prints the time counters
+ ///'Do nothing' version of \ref TimeReport
- ///Prints the time counters in the following form:
+ ///\sa TimeReport
///
- /// u: XX.XXs s: XX.XXs cu: XX.XXs cs: XX.XXs real: XX.XXs
- ///
- /// where the values are the
- /// \li \c u: user cpu time,
- /// \li \c s: system cpu time,
- /// \li \c cu: user cpu time of children,
- /// \li \c cs: system cpu time of children,
- /// \li \c real: real time.
- /// \relates TimeStamp
- inline std::ostream& operator<<(std::ostream& os,const TimeStamp &t)
+ class NoTimeReport
{
- long cls = sysconf(_SC_CLK_TCK);
- os << "u: " << double(t.getTms().tms_utime)/cls <<
- "s, s: " << double(t.getTms().tms_stime)/cls <<
- "s, cu: " << double(t.getTms().tms_cutime)/cls <<
- "s, cs: " << double(t.getTms().tms_cstime)/cls <<
- "s, real: " << t.realTime() << "s";
- return os;
- }
+ public:
+ ///\e
+ NoTimeReport(std::string title,std::ostream &os=std::cerr,bool run=true) {}
+ ///\e Do nothing.
+ ~NoTimeReport() {}
-
+ operator TimeStamp () const { return TimeStamp(); }
+ void reset() {}
+ void start() {}
+ void stop() {}
+ void halt() {}
+ int running() { return 0; }
+ void restart() {}
+ double userTime() const { return 0; }
+ double systemTime() const { return 0; }
+ double cUserTime() const { return 0; }
+ double cSystemTime() const { return 0; }
+ double realTime() const { return 0; }
+ };
+
///Tool to measure the running time more exactly.
///This function calls \c f several times and returns the average