Мне было просто интересно, даст ли использование timerfd (timerfd_create) для Linux какое-либо преимущество в производительности по сравнению с Timer_Heap или Timer_Wheel.
Конечно, это вопрос очень высокого уровня, и я видел единственное место, где он использовался в любой среде, — это «muduo». Кроме того, у меня также нет никаких сравнений производительности.
Благодарю.
Библиотеки цикла событий, такие как libevent, поддерживают таймеры в минимальной куче и передают тайм-аут до истечения следующего таймера select
/epoll
, Обратите внимание, что добавление и удаление таймера не включает никаких системных вызовов в этом сценарии, оно просто добавляет новый элемент в min-heap.
Когда вы используете timerfd
требуется 3 системных вызова (timerfd_create()
, timerfd_settime()
а также epoll_ctl()
) просто чтобы создать таймер. И каждый раз, когда он истекает, вам нужно read()
из этого файлового дескриптора.
timerfd
может быть полезно для приложений без цикла событий, но для тех, которые уже используют достойный цикл событий, это в значительной степени бесполезно.
Других решений пока нет …