forked from cory/tildefriends
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:
42
deps/libuv/test/benchmark-loop-count.c
vendored
42
deps/libuv/test/benchmark-loop-count.c
vendored
@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user