IpTimingStatistics.hpp 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. // Copyright (C) 2005, 2008 International Business Machines and others.
  2. // All Rights Reserved.
  3. // This code is published under the Eclipse Public License.
  4. //
  5. // $Id: IpTimingStatistics.hpp 2005 2011-06-06 12:55:16Z stefan $
  6. //
  7. // Authors: Andreas Waechter IBM 2005-09-19
  8. #ifndef __IPTIMINGSTATISTICS_HPP__
  9. #define __IPTIMINGSTATISTICS_HPP__
  10. #include "IpReferenced.hpp"
  11. #include "IpJournalist.hpp"
  12. #include "IpTimedTask.hpp"
  13. namespace Ipopt
  14. {
  15. /** This class collects all timing statistics for Ipopt.
  16. */
  17. class TimingStatistics : public ReferencedObject
  18. {
  19. public:
  20. /**@name Constructors/Destructors */
  21. //@{
  22. /** Default constructor. */
  23. TimingStatistics()
  24. {}
  25. /** Default destructor */
  26. virtual ~TimingStatistics()
  27. {}
  28. //@}
  29. /** Method for resetting all times. */
  30. void ResetTimes();
  31. /** Method for printing all timing information */
  32. void PrintAllTimingStatistics(Journalist& jnlst,
  33. EJournalLevel level,
  34. EJournalCategory category) const;
  35. /**@name Accessor methods to all timed tasks. */
  36. //@{
  37. TimedTask& OverallAlgorithm()
  38. {
  39. return OverallAlgorithm_;
  40. }
  41. TimedTask& PrintProblemStatistics()
  42. {
  43. return PrintProblemStatistics_;
  44. }
  45. TimedTask& InitializeIterates()
  46. {
  47. return InitializeIterates_;
  48. }
  49. TimedTask& UpdateHessian()
  50. {
  51. return UpdateHessian_;
  52. }
  53. TimedTask& OutputIteration()
  54. {
  55. return OutputIteration_;
  56. }
  57. TimedTask& UpdateBarrierParameter()
  58. {
  59. return UpdateBarrierParameter_;
  60. }
  61. TimedTask& ComputeSearchDirection()
  62. {
  63. return ComputeSearchDirection_;
  64. }
  65. TimedTask& ComputeAcceptableTrialPoint()
  66. {
  67. return ComputeAcceptableTrialPoint_;
  68. }
  69. TimedTask& AcceptTrialPoint()
  70. {
  71. return AcceptTrialPoint_;
  72. }
  73. TimedTask& CheckConvergence()
  74. {
  75. return CheckConvergence_;
  76. }
  77. TimedTask& PDSystemSolverTotal()
  78. {
  79. return PDSystemSolverTotal_;
  80. }
  81. TimedTask& PDSystemSolverSolveOnce()
  82. {
  83. return PDSystemSolverSolveOnce_;
  84. }
  85. TimedTask& ComputeResiduals()
  86. {
  87. return ComputeResiduals_;
  88. }
  89. TimedTask& StdAugSystemSolverMultiSolve()
  90. {
  91. return StdAugSystemSolverMultiSolve_;
  92. }
  93. TimedTask& LinearSystemScaling()
  94. {
  95. return LinearSystemScaling_;
  96. }
  97. TimedTask& LinearSystemSymbolicFactorization()
  98. {
  99. return LinearSystemSymbolicFactorization_;
  100. }
  101. TimedTask& LinearSystemFactorization()
  102. {
  103. return LinearSystemFactorization_;
  104. }
  105. TimedTask& LinearSystemBackSolve()
  106. {
  107. return LinearSystemBackSolve_;
  108. }
  109. TimedTask& LinearSystemStructureConverter()
  110. {
  111. return LinearSystemStructureConverter_;
  112. }
  113. TimedTask& LinearSystemStructureConverterInit()
  114. {
  115. return LinearSystemStructureConverterInit_;
  116. }
  117. TimedTask& QualityFunctionSearch()
  118. {
  119. return QualityFunctionSearch_;
  120. }
  121. TimedTask& TryCorrector()
  122. {
  123. return TryCorrector_;
  124. }
  125. TimedTask& Task1()
  126. {
  127. return Task1_;
  128. }
  129. TimedTask& Task2()
  130. {
  131. return Task2_;
  132. }
  133. TimedTask& Task3()
  134. {
  135. return Task3_;
  136. }
  137. TimedTask& Task4()
  138. {
  139. return Task4_;
  140. }
  141. TimedTask& Task5()
  142. {
  143. return Task5_;
  144. }
  145. TimedTask& Task6()
  146. {
  147. return Task6_;
  148. }
  149. //@}
  150. private:
  151. /**@name Default Compiler Generated Methods
  152. * (Hidden to avoid implicit creation/calling).
  153. * These methods are not implemented and
  154. * we do not want the compiler to implement
  155. * them for us, so we declare them private
  156. * and do not define them. This ensures that
  157. * they will not be implicitly created/called. */
  158. //@{
  159. /** Copy Constructor */
  160. TimingStatistics(const TimingStatistics&);
  161. /** Overloaded Equals Operator */
  162. void operator=(const TimingStatistics&);
  163. //@}
  164. /**@name All timed tasks. */
  165. //@{
  166. TimedTask OverallAlgorithm_;
  167. TimedTask PrintProblemStatistics_;
  168. TimedTask InitializeIterates_;
  169. TimedTask UpdateHessian_;
  170. TimedTask OutputIteration_;
  171. TimedTask UpdateBarrierParameter_;
  172. TimedTask ComputeSearchDirection_;
  173. TimedTask ComputeAcceptableTrialPoint_;
  174. TimedTask AcceptTrialPoint_;
  175. TimedTask CheckConvergence_;
  176. TimedTask PDSystemSolverTotal_;
  177. TimedTask PDSystemSolverSolveOnce_;
  178. TimedTask ComputeResiduals_;
  179. TimedTask StdAugSystemSolverMultiSolve_;
  180. TimedTask LinearSystemScaling_;
  181. TimedTask LinearSystemSymbolicFactorization_;
  182. TimedTask LinearSystemFactorization_;
  183. TimedTask LinearSystemBackSolve_;
  184. TimedTask LinearSystemStructureConverter_;
  185. TimedTask LinearSystemStructureConverterInit_;
  186. TimedTask QualityFunctionSearch_;
  187. TimedTask TryCorrector_;
  188. TimedTask Task1_;
  189. TimedTask Task2_;
  190. TimedTask Task3_;
  191. TimedTask Task4_;
  192. TimedTask Task5_;
  193. TimedTask Task6_;
  194. //@}
  195. };
  196. } // namespace Ipopt
  197. #endif