Skip to content

Commit d09503b

Browse files
author
Yibing Liu
committed
Remove the redundant switch case statement
1 parent 7a4f3be commit d09503b

File tree

2 files changed

+43
-39
lines changed

2 files changed

+43
-39
lines changed

paddle/platform/profiler.cc

Lines changed: 42 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,44 @@ std::vector<std::vector<Event>> DisableProfiler() {
182182
void ParseEvents(std::vector<std::vector<Event>>& events,
183183
EventSortingKey sorted_by) {
184184
if (g_profiler_place == "") return;
185+
186+
std::string sorted_domain;
187+
std::function<bool(EventItem&, EventItem&)> sorted_func;
188+
switch (sorted_by) {
189+
case EventSortingKey::kCalls:
190+
sorted_domain = "number of calls";
191+
sorted_func = [](EventItem& a, EventItem& b) {
192+
return a.calls > b.calls;
193+
};
194+
break;
195+
case EventSortingKey::kTotal:
196+
sorted_domain = "total time";
197+
sorted_func = [](EventItem& a, EventItem& b) {
198+
return a.total_time > b.total_time;
199+
};
200+
break;
201+
case EventSortingKey::kMin:
202+
sorted_domain = "minimum time";
203+
sorted_func = [](EventItem& a, EventItem& b) {
204+
return a.min_time > b.min_time;
205+
};
206+
break;
207+
case EventSortingKey::kMax:
208+
sorted_domain = "maximum time";
209+
sorted_func = [](EventItem& a, EventItem& b) {
210+
return a.max_time > b.max_time;
211+
};
212+
break;
213+
case EventSortingKey::kAve:
214+
sorted_domain = "average time";
215+
sorted_func = [](EventItem& a, EventItem& b) {
216+
return a.ave_time > b.ave_time;
217+
};
218+
break;
219+
default:
220+
sorted_domain = "event end time";
221+
}
222+
185223
std::vector<std::vector<EventItem>> events_table;
186224
size_t max_name_width = 0;
187225
for (size_t i = 0; i < events.size(); i++) {
@@ -240,21 +278,7 @@ void ParseEvents(std::vector<std::vector<Event>>& events,
240278
}
241279
// sort
242280
if (sorted_by != EventSortingKey::kDefault) {
243-
std::sort(event_items.begin(), event_items.end(),
244-
[&](EventItem& a, EventItem& b) {
245-
switch (sorted_by) {
246-
case EventSortingKey::kCalls:
247-
return a.calls > b.calls;
248-
case EventSortingKey::kTotal:
249-
return a.total_time > b.total_time;
250-
case EventSortingKey::kMin:
251-
return a.min_time > b.min_time;
252-
case EventSortingKey::kMax:
253-
return a.max_time > b.max_time;
254-
default:
255-
return a.ave_time > b.ave_time;
256-
}
257-
});
281+
std::sort(event_items.begin(), event_items.end(), sorted_func);
258282
}
259283

260284
events_table.push_back(event_items);
@@ -268,39 +292,19 @@ void ParseEvents(std::vector<std::vector<Event>>& events,
268292
}
269293

270294
// Print report
271-
PrintProfilingReport(events_table, sorted_by, max_name_width + 4, 12);
295+
PrintProfilingReport(events_table, sorted_domain, max_name_width + 4, 12);
272296
}
273297

274298
void PrintProfilingReport(std::vector<std::vector<EventItem>>& events_table,
275-
EventSortingKey sorted_by, const size_t name_width,
299+
std::string& sorted_domain, const size_t name_width,
276300
const size_t data_width) {
277301
// Output header information
278302
std::cout << "\n------------------------->"
279303
<< " Profiling Report "
280304
<< "<-------------------------\n\n";
281305
std::cout << "Place: " << g_profiler_place << std::endl;
282306
std::cout << "Time unit: ms" << std::endl;
283-
std::string sort_domain = "event end time";
284-
switch (sorted_by) {
285-
case EventSortingKey::kCalls:
286-
sort_domain = "number of calls";
287-
break;
288-
case EventSortingKey::kTotal:
289-
sort_domain = "total time";
290-
break;
291-
case EventSortingKey::kMin:
292-
sort_domain = "minimum time";
293-
break;
294-
case EventSortingKey::kMax:
295-
sort_domain = "maximum time";
296-
break;
297-
case EventSortingKey::kAve:
298-
sort_domain = "average time";
299-
break;
300-
default:
301-
break;
302-
}
303-
std::cout << "Sorted by " << sort_domain
307+
std::cout << "Sorted by " << sorted_domain
304308
<< " in descending order in the same thread\n\n";
305309
// Output events table
306310
std::cout.setf(std::ios::left);

paddle/platform/profiler.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ void ParseEvents(std::vector<std::vector<Event>>&,
136136

137137
// Print results
138138
void PrintProfilingReport(std::vector<std::vector<EventItem>>& events_table,
139-
EventSortingKey sorted_by, const size_t name_width,
139+
std::string& sorted_domain, const size_t name_width,
140140
const size_t data_width);
141141
} // namespace platform
142142
} // namespace paddle

0 commit comments

Comments
 (0)