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