00001 // Copyright (C) 2005, 2008 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Eclipse Public License. 00004 // 00005 // $Id: IpTimingStatistics.hpp 2005 2011-06-06 12:55:16Z stefan $ 00006 // 00007 // Authors: Andreas Waechter IBM 2005-09-19 00008 00009 #ifndef __IPTIMINGSTATISTICS_HPP__ 00010 #define __IPTIMINGSTATISTICS_HPP__ 00011 00012 #include "IpReferenced.hpp" 00013 #include "IpJournalist.hpp" 00014 #include "IpTimedTask.hpp" 00015 00016 namespace Ipopt 00017 { 00020 class TimingStatistics : public ReferencedObject 00021 { 00022 public: 00026 TimingStatistics() 00027 {} 00028 00030 virtual ~TimingStatistics() 00031 {} 00033 00035 void ResetTimes(); 00036 00038 void PrintAllTimingStatistics(Journalist& jnlst, 00039 EJournalLevel level, 00040 EJournalCategory category) const; 00041 00044 TimedTask& OverallAlgorithm() 00045 { 00046 return OverallAlgorithm_; 00047 } 00048 TimedTask& PrintProblemStatistics() 00049 { 00050 return PrintProblemStatistics_; 00051 } 00052 TimedTask& InitializeIterates() 00053 { 00054 return InitializeIterates_; 00055 } 00056 TimedTask& UpdateHessian() 00057 { 00058 return UpdateHessian_; 00059 } 00060 TimedTask& OutputIteration() 00061 { 00062 return OutputIteration_; 00063 } 00064 TimedTask& UpdateBarrierParameter() 00065 { 00066 return UpdateBarrierParameter_; 00067 } 00068 TimedTask& ComputeSearchDirection() 00069 { 00070 return ComputeSearchDirection_; 00071 } 00072 TimedTask& ComputeAcceptableTrialPoint() 00073 { 00074 return ComputeAcceptableTrialPoint_; 00075 } 00076 TimedTask& AcceptTrialPoint() 00077 { 00078 return AcceptTrialPoint_; 00079 } 00080 TimedTask& CheckConvergence() 00081 { 00082 return CheckConvergence_; 00083 } 00084 00085 TimedTask& PDSystemSolverTotal() 00086 { 00087 return PDSystemSolverTotal_; 00088 } 00089 TimedTask& PDSystemSolverSolveOnce() 00090 { 00091 return PDSystemSolverSolveOnce_; 00092 } 00093 TimedTask& ComputeResiduals() 00094 { 00095 return ComputeResiduals_; 00096 } 00097 TimedTask& StdAugSystemSolverMultiSolve() 00098 { 00099 return StdAugSystemSolverMultiSolve_; 00100 } 00101 TimedTask& LinearSystemScaling() 00102 { 00103 return LinearSystemScaling_; 00104 } 00105 TimedTask& LinearSystemSymbolicFactorization() 00106 { 00107 return LinearSystemSymbolicFactorization_; 00108 } 00109 TimedTask& LinearSystemFactorization() 00110 { 00111 return LinearSystemFactorization_; 00112 } 00113 TimedTask& LinearSystemBackSolve() 00114 { 00115 return LinearSystemBackSolve_; 00116 } 00117 TimedTask& LinearSystemStructureConverter() 00118 { 00119 return LinearSystemStructureConverter_; 00120 } 00121 TimedTask& LinearSystemStructureConverterInit() 00122 { 00123 return LinearSystemStructureConverterInit_; 00124 } 00125 TimedTask& QualityFunctionSearch() 00126 { 00127 return QualityFunctionSearch_; 00128 } 00129 TimedTask& TryCorrector() 00130 { 00131 return TryCorrector_; 00132 } 00133 00134 TimedTask& Task1() 00135 { 00136 return Task1_; 00137 } 00138 TimedTask& Task2() 00139 { 00140 return Task2_; 00141 } 00142 TimedTask& Task3() 00143 { 00144 return Task3_; 00145 } 00146 TimedTask& Task4() 00147 { 00148 return Task4_; 00149 } 00150 TimedTask& Task5() 00151 { 00152 return Task5_; 00153 } 00154 TimedTask& Task6() 00155 { 00156 return Task6_; 00157 } 00159 00160 private: 00170 TimingStatistics(const TimingStatistics&); 00171 00173 void operator=(const TimingStatistics&); 00175 00178 TimedTask OverallAlgorithm_; 00179 TimedTask PrintProblemStatistics_; 00180 TimedTask InitializeIterates_; 00181 TimedTask UpdateHessian_; 00182 TimedTask OutputIteration_; 00183 TimedTask UpdateBarrierParameter_; 00184 TimedTask ComputeSearchDirection_; 00185 TimedTask ComputeAcceptableTrialPoint_; 00186 TimedTask AcceptTrialPoint_; 00187 TimedTask CheckConvergence_; 00188 00189 TimedTask PDSystemSolverTotal_; 00190 TimedTask PDSystemSolverSolveOnce_; 00191 TimedTask ComputeResiduals_; 00192 TimedTask StdAugSystemSolverMultiSolve_; 00193 TimedTask LinearSystemScaling_; 00194 TimedTask LinearSystemSymbolicFactorization_; 00195 TimedTask LinearSystemFactorization_; 00196 TimedTask LinearSystemBackSolve_; 00197 TimedTask LinearSystemStructureConverter_; 00198 TimedTask LinearSystemStructureConverterInit_; 00199 TimedTask QualityFunctionSearch_; 00200 TimedTask TryCorrector_; 00201 00202 TimedTask Task1_; 00203 TimedTask Task2_; 00204 TimedTask Task3_; 00205 TimedTask Task4_; 00206 TimedTask Task5_; 00207 TimedTask Task6_; 00209 }; 00210 00211 } // namespace Ipopt 00212 00213 #endif