MINOR: pollers: only update the local date during busy polling
This patch modifies epoll, kqueue and evports (the 3 pollers that support
busy polling) to only update the local date in the inner polling loop,
the global one being done when leaving the loop. Testing with epoll on
a 24c/48t machine showed a boost from 53M to 352M loops/s, indicating
that the loop was spending 85% of its time updating the global date or
causing side effects (which was confirmed with perf top showing 67% in
clock_update_global_date() alone).
diff --git a/src/ev_evports.c b/src/ev_evports.c
index 38fd183..07676e6 100644
--- a/src/ev_evports.c
+++ b/src/ev_evports.c
@@ -211,7 +211,7 @@
break;
}
}
- clock_update_date(timeout, nevlist);
+ clock_update_local_date(timeout, nevlist);
if (nevlist || interrupted)
break;
@@ -221,6 +221,7 @@
break;
} while(1);
+ clock_update_global_date();
fd_leaving_poll(wait_time, nevlist);
if (nevlist > 0)