feb804dca8
Motivation Currently when future tasks are scheduled via EventExecutors from a different thread, at least two allocations are performed - the ScheduledFutureTask wrapping the to-be-run task, and a Runnable wrapping the action to add to the scheduled task priority queue. The latter can be avoided by incorporating this logic into the former. Modification - When scheduling or cancelling a future task from outside the event loop, enqueue the task itself rather than wrapping in a Runnable - Have ScheduledFutureTask#run first verify the task's deadline has passed and if not add or remove it from the scheduledTaskQueue depending on its cancellation state - Add new outside-event-loop benchmarks to ScheduleFutureTaskBenchmark Result Fewer allocations when scheduling/cancelling future tasks |
||
---|---|---|
.. | ||
src/main | ||
pom.xml | ||
README.md |
Microbenchmark tests
See our wiki page.