libuv 1.46.0.

git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4336 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
2023-07-04 00:24:48 +00:00
parent f0452704a1
commit ae0a8b0a33
65 changed files with 1519 additions and 755 deletions

View File

@ -26,6 +26,7 @@
#include <stdlib.h>
#define NUM_TICKS (2 * 1000 * 1000)
#define NUM_TICKS2 (2 * 1000 * 1000 * 100)
static unsigned long ticks;
static uv_idle_t idle_handle;
@ -37,6 +38,19 @@ static void idle_cb(uv_idle_t* handle) {
uv_idle_stop(handle);
}
static void idle_alive_cb(uv_idle_t* handle) {
int ticks = 0;
while (++ticks < NUM_TICKS2) {
int r = uv_loop_alive(handle->loop);
if (r == 0)
abort();
}
*(int*)handle->data = ticks;
uv_idle_stop(handle);
}
static void idle2_cb(uv_idle_t* handle) {
ticks++;
@ -90,3 +104,31 @@ BENCHMARK_IMPL(loop_count_timed) {
MAKE_VALGRIND_HAPPY(loop);
return 0;
}
/* Measure the performance of running uv_loop_alive(). Adding this so we can get
* some sort of metric for the impact of switching active_reqs.count to use
* atomics. No other code sits in a hot path. */
BENCHMARK_IMPL(loop_alive) {
uv_loop_t* loop = uv_default_loop();
int ticks = 0;
uint64_t ns;
uv_idle_init(loop, &idle_handle);
idle_handle.data = &ticks;
uv_idle_start(&idle_handle, idle_alive_cb);
ns = uv_hrtime();
uv_run(loop, UV_RUN_DEFAULT);
ns = uv_hrtime() - ns;
ASSERT_EQ(ticks, NUM_TICKS2);
fprintf(stderr, "loop_alive: %d ticks in %.2fs (%.0f/s)\n",
NUM_TICKS2,
ns / 1e9,
NUM_TICKS2 / (ns / 1e9));
fflush(stderr);
MAKE_VALGRIND_HAPPY(loop);
return 0;
}