Convert EventScheduler to use classes for callbacks
std::function is slow to construct and destroy. Convert the hot path
over to use a class instead.
Change-Id: Ic7627da065576ef0c03bb09e07b60ee5a95b0c94
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/aos/events/event_scheduler.cc b/aos/events/event_scheduler.cc
index 6f2c2c8..c06638c 100644
--- a/aos/events/event_scheduler.cc
+++ b/aos/events/event_scheduler.cc
@@ -8,8 +8,8 @@
namespace aos {
-EventScheduler::Token EventScheduler::Schedule(
- monotonic_clock::time_point time, ::std::function<void()> callback) {
+EventScheduler::Token EventScheduler::Schedule(monotonic_clock::time_point time,
+ Event *callback) {
return events_list_.emplace(time, callback);
}
@@ -58,9 +58,9 @@
CHECK_EQ(t.boot, boot_count_);
CHECK_EQ(t.time, iter->first) << ": Time is wrong on node " << node_index_;
- ::std::function<void()> callback = ::std::move(iter->second);
+ Event *callback = iter->second;
events_list_.erase(iter);
- callback();
+ callback->Handle();
converter_->ObserveTimePassed(scheduler_scheduler_->distributed_now());
}