提交 d09503b2 编写于 作者: Y Yibing Liu

Remove the redundant switch case statement

上级 7a4f3be9
...@@ -182,6 +182,44 @@ std::vector<std::vector<Event>> DisableProfiler() { ...@@ -182,6 +182,44 @@ std::vector<std::vector<Event>> DisableProfiler() {
void ParseEvents(std::vector<std::vector<Event>>& events, void ParseEvents(std::vector<std::vector<Event>>& events,
EventSortingKey sorted_by) { EventSortingKey sorted_by) {
if (g_profiler_place == "") return; if (g_profiler_place == "") return;
std::string sorted_domain;
std::function<bool(EventItem&, EventItem&)> sorted_func;
switch (sorted_by) {
case EventSortingKey::kCalls:
sorted_domain = "number of calls";
sorted_func = [](EventItem& a, EventItem& b) {
return a.calls > b.calls;
};
break;
case EventSortingKey::kTotal:
sorted_domain = "total time";
sorted_func = [](EventItem& a, EventItem& b) {
return a.total_time > b.total_time;
};
break;
case EventSortingKey::kMin:
sorted_domain = "minimum time";
sorted_func = [](EventItem& a, EventItem& b) {
return a.min_time > b.min_time;
};
break;
case EventSortingKey::kMax:
sorted_domain = "maximum time";
sorted_func = [](EventItem& a, EventItem& b) {
return a.max_time > b.max_time;
};
break;
case EventSortingKey::kAve:
sorted_domain = "average time";
sorted_func = [](EventItem& a, EventItem& b) {
return a.ave_time > b.ave_time;
};
break;
default:
sorted_domain = "event end time";
}
std::vector<std::vector<EventItem>> events_table; std::vector<std::vector<EventItem>> events_table;
size_t max_name_width = 0; size_t max_name_width = 0;
for (size_t i = 0; i < events.size(); i++) { for (size_t i = 0; i < events.size(); i++) {
...@@ -240,21 +278,7 @@ void ParseEvents(std::vector<std::vector<Event>>& events, ...@@ -240,21 +278,7 @@ void ParseEvents(std::vector<std::vector<Event>>& events,
} }
// sort // sort
if (sorted_by != EventSortingKey::kDefault) { if (sorted_by != EventSortingKey::kDefault) {
std::sort(event_items.begin(), event_items.end(), std::sort(event_items.begin(), event_items.end(), sorted_func);
[&](EventItem& a, EventItem& b) {
switch (sorted_by) {
case EventSortingKey::kCalls:
return a.calls > b.calls;
case EventSortingKey::kTotal:
return a.total_time > b.total_time;
case EventSortingKey::kMin:
return a.min_time > b.min_time;
case EventSortingKey::kMax:
return a.max_time > b.max_time;
default:
return a.ave_time > b.ave_time;
}
});
} }
events_table.push_back(event_items); events_table.push_back(event_items);
...@@ -268,11 +292,11 @@ void ParseEvents(std::vector<std::vector<Event>>& events, ...@@ -268,11 +292,11 @@ void ParseEvents(std::vector<std::vector<Event>>& events,
} }
// Print report // Print report
PrintProfilingReport(events_table, sorted_by, max_name_width + 4, 12); PrintProfilingReport(events_table, sorted_domain, max_name_width + 4, 12);
} }
void PrintProfilingReport(std::vector<std::vector<EventItem>>& events_table, void PrintProfilingReport(std::vector<std::vector<EventItem>>& events_table,
EventSortingKey sorted_by, const size_t name_width, std::string& sorted_domain, const size_t name_width,
const size_t data_width) { const size_t data_width) {
// Output header information // Output header information
std::cout << "\n------------------------->" std::cout << "\n------------------------->"
...@@ -280,27 +304,7 @@ void PrintProfilingReport(std::vector<std::vector<EventItem>>& events_table, ...@@ -280,27 +304,7 @@ void PrintProfilingReport(std::vector<std::vector<EventItem>>& events_table,
<< "<-------------------------\n\n"; << "<-------------------------\n\n";
std::cout << "Place: " << g_profiler_place << std::endl; std::cout << "Place: " << g_profiler_place << std::endl;
std::cout << "Time unit: ms" << std::endl; std::cout << "Time unit: ms" << std::endl;
std::string sort_domain = "event end time"; std::cout << "Sorted by " << sorted_domain
switch (sorted_by) {
case EventSortingKey::kCalls:
sort_domain = "number of calls";
break;
case EventSortingKey::kTotal:
sort_domain = "total time";
break;
case EventSortingKey::kMin:
sort_domain = "minimum time";
break;
case EventSortingKey::kMax:
sort_domain = "maximum time";
break;
case EventSortingKey::kAve:
sort_domain = "average time";
break;
default:
break;
}
std::cout << "Sorted by " << sort_domain
<< " in descending order in the same thread\n\n"; << " in descending order in the same thread\n\n";
// Output events table // Output events table
std::cout.setf(std::ios::left); std::cout.setf(std::ios::left);
......
...@@ -136,7 +136,7 @@ void ParseEvents(std::vector<std::vector<Event>>&, ...@@ -136,7 +136,7 @@ void ParseEvents(std::vector<std::vector<Event>>&,
// Print results // Print results
void PrintProfilingReport(std::vector<std::vector<EventItem>>& events_table, void PrintProfilingReport(std::vector<std::vector<EventItem>>& events_table,
EventSortingKey sorted_by, const size_t name_width, std::string& sorted_domain, const size_t name_width,
const size_t data_width); const size_t data_width);
} // namespace platform } // namespace platform
} // namespace paddle } // namespace paddle
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册