code to print timing as CSV
							parent
							
								
									4437baf013
								
							
						
					
					
						commit
						53cf49b1ba
					
				|  | @ -106,6 +106,56 @@ void TimingOutline::print(const std::string& outline) const { | |||
| #endif | ||||
| } | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
| void TimingOutline::print_csv_header(bool addLineBreak) const { | ||||
| #ifdef GTSAM_USE_BOOST_FEATURES | ||||
|   // Order is (CPU time, number of times, wall time, time + children in seconds,
 | ||||
|   // min time, max time)
 | ||||
|   std::cout << label_ + " cpu time (s)" << "," << label_ + " #calls" << "," | ||||
|             << label_ + " wall time(s)" << "," << label_ + " subtree time (s)" | ||||
|             << "," << label_ + " min time (s)" << "," << label_ + "max time(s)" | ||||
|             << ", "; | ||||
|   // Order children
 | ||||
|   typedef FastMap<size_t, std::shared_ptr<TimingOutline> > ChildOrder; | ||||
|   ChildOrder childOrder; | ||||
|   for (const ChildMap::value_type& child : children_) { | ||||
|     childOrder[child.second->myOrder_] = child.second; | ||||
|   } | ||||
|   // Print children
 | ||||
|   for (const ChildOrder::value_type& order_child : childOrder) { | ||||
|     order_child.second->print_csv_header(); | ||||
|   } | ||||
|   if (addLineBreak) { | ||||
|     std::cout << std::endl; | ||||
|   } | ||||
|   std::cout.flush(); | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
| void TimingOutline::print_csv(bool addLineBreak) const { | ||||
| #ifdef GTSAM_USE_BOOST_FEATURES | ||||
|   // Order is (CPU time, number of times, wall time, time + children in seconds,
 | ||||
|   // min time, max time)
 | ||||
|   std::cout << self() << "," << n_ << "," << wall() << "," << secs() << "," | ||||
|             << min() << "," << max() << ", "; | ||||
|   // Order children
 | ||||
|   typedef FastMap<size_t, std::shared_ptr<TimingOutline> > ChildOrder; | ||||
|   ChildOrder childOrder; | ||||
|   for (const ChildMap::value_type& child : children_) { | ||||
|     childOrder[child.second->myOrder_] = child.second; | ||||
|   } | ||||
|   // Print children
 | ||||
|   for (const ChildOrder::value_type& order_child : childOrder) { | ||||
|     order_child.second->print_csv(false); | ||||
|   } | ||||
|   if (addLineBreak) { | ||||
|     std::cout << std::endl; | ||||
|   } | ||||
|   std::cout.flush(); | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| void TimingOutline::print2(const std::string& outline, | ||||
|     const double parentTotal) const { | ||||
| #ifdef GTSAM_USE_BOOST_FEATURES | ||||
|  |  | |||
|  | @ -199,6 +199,29 @@ namespace gtsam { | |||
| #endif | ||||
|       GTSAM_EXPORT void print(const std::string& outline = "") const; | ||||
|       GTSAM_EXPORT void print2(const std::string& outline = "", const double parentTotal = -1.0) const; | ||||
| 
 | ||||
|       /**
 | ||||
|        * @brief Print the CSV header. | ||||
|        * Order is | ||||
|        * (CPU time, number of times, wall time, time + children in seconds, min | ||||
|        * time, max time) | ||||
|        * | ||||
|        * @param addLineBreak Flag indicating if a line break should be added at | ||||
|        * the end. Only used at the top-leve. | ||||
|        */ | ||||
|       GTSAM_EXPORT void print_csv_header(bool addLineBreak = false) const; | ||||
| 
 | ||||
|       /**
 | ||||
|        * @brief Print the times recursively from parent to child in CSV format. | ||||
|        * For each timing node, the output is | ||||
|        * (CPU time, number of times, wall time, time + children in seconds, min | ||||
|        * time, max time) | ||||
|        * | ||||
|        * @param addLineBreak Flag indicating if a line break should be added at | ||||
|        * the end. Only used at the top-leve. | ||||
|        */ | ||||
|       GTSAM_EXPORT void print_csv(bool addLineBreak = false) const; | ||||
| 
 | ||||
|       GTSAM_EXPORT const std::shared_ptr<TimingOutline>& | ||||
|         child(size_t child, const std::string& label, const std::weak_ptr<TimingOutline>& thisPtr); | ||||
|       GTSAM_EXPORT void tic(); | ||||
|  | @ -268,6 +291,14 @@ inline void tictoc_finishedIteration_() { | |||
| inline void tictoc_print_() { | ||||
|   ::gtsam::internal::gTimingRoot->print(); } | ||||
| 
 | ||||
| // print timing in CSV format
 | ||||
| inline void tictoc_print_csv_(bool displayHeader = false) { | ||||
|   if (displayHeader) { | ||||
|     ::gtsam::internal::gTimingRoot->print_csv_header(true); | ||||
|   } | ||||
|   ::gtsam::internal::gTimingRoot->print_csv(true); | ||||
| } | ||||
| 
 | ||||
| // print mean and standard deviation
 | ||||
| inline void tictoc_print2_() { | ||||
|   ::gtsam::internal::gTimingRoot->print2(); } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue