Hashed hierarchical timing wheels is a cool very specialized data structure to make this efficient. The paper claims it's O(1) to start, stop and maintain timers which is much more efficient than O(log n).
Given there's n timers and O(1) operations I'm not sure where the O(n log n) fits in here. Possible in the minimum number of ticks?
http://www.cs.columbia.edu/~nahum/w6998/papers/sosp87-timing...
Production implementation: https://github.com/facebook/folly/blob/master/folly/io/async...