code to print timing as CSV
parent
4437baf013
commit
53cf49b1ba
|
@ -106,6 +106,56 @@ void TimingOutline::print(const std::string& outline) const {
|
||||||
#endif
|
#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,
|
void TimingOutline::print2(const std::string& outline,
|
||||||
const double parentTotal) const {
|
const double parentTotal) const {
|
||||||
#ifdef GTSAM_USE_BOOST_FEATURES
|
#ifdef GTSAM_USE_BOOST_FEATURES
|
||||||
|
|
|
@ -199,6 +199,29 @@ namespace gtsam {
|
||||||
#endif
|
#endif
|
||||||
GTSAM_EXPORT void print(const std::string& outline = "") const;
|
GTSAM_EXPORT void print(const std::string& outline = "") const;
|
||||||
GTSAM_EXPORT void print2(const std::string& outline = "", const double parentTotal = -1.0) 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>&
|
GTSAM_EXPORT const std::shared_ptr<TimingOutline>&
|
||||||
child(size_t child, const std::string& label, const std::weak_ptr<TimingOutline>& thisPtr);
|
child(size_t child, const std::string& label, const std::weak_ptr<TimingOutline>& thisPtr);
|
||||||
GTSAM_EXPORT void tic();
|
GTSAM_EXPORT void tic();
|
||||||
|
@ -268,6 +291,14 @@ inline void tictoc_finishedIteration_() {
|
||||||
inline void tictoc_print_() {
|
inline void tictoc_print_() {
|
||||||
::gtsam::internal::gTimingRoot->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
|
// print mean and standard deviation
|
||||||
inline void tictoc_print2_() {
|
inline void tictoc_print2_() {
|
||||||
::gtsam::internal::gTimingRoot->print2(); }
|
::gtsam::internal::gTimingRoot->print2(); }
|
||||||
|
|
Loading…
Reference in New Issue