Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

bench: add new idle loop count benchmark

  • Loading branch information...
bnoordhuis committed May 31, 2012
1 parent 71a66c1 commit 3f37ba859f401349b75581a75a5c46040d29dbef
Showing with 35 additions and 3 deletions.
  1. +2 −0 test/benchmark-list.h
  2. +33 −3 test/benchmark-loop-count.c
@@ -21,6 +21,7 @@

BENCHMARK_DECLARE (sizes)
BENCHMARK_DECLARE (loop_count)
BENCHMARK_DECLARE (loop_count_timed)
BENCHMARK_DECLARE (ping_pongs)
BENCHMARK_DECLARE (tcp_write_batch)
BENCHMARK_DECLARE (tcp4_pound_100)
@@ -55,6 +56,7 @@ HELPER_DECLARE (dns_server)
TASK_LIST_START
BENCHMARK_ENTRY (sizes)
BENCHMARK_ENTRY (loop_count)
BENCHMARK_ENTRY (loop_count_timed)

BENCHMARK_ENTRY (ping_pongs)
BENCHMARK_HELPER (ping_pongs, tcp4_echo_server)
@@ -25,12 +25,20 @@
#include <stdio.h>
#include <stdlib.h>

#define NUM_TICKS (2 * 1000 * 1000)

static unsigned long ticks;
static uv_idle_t idle_handle;
static uv_timer_t timer_handle;


static void idle_cb(uv_idle_t* handle, int status) {
if (++ticks == NUM_TICKS)
uv_idle_stop(handle);
}


static void idle2_cb(uv_idle_t* handle, int status) {
ticks++;
}

@@ -43,13 +51,35 @@ static void timer_cb(uv_timer_t* handle, int status) {

BENCHMARK_IMPL(loop_count) {
uv_loop_t* loop = uv_default_loop();

uv_timer_init(loop, &timer_handle);
uv_timer_start(&timer_handle, timer_cb, 5000, 0);
uint64_t ns;

uv_idle_init(loop, &idle_handle);
uv_idle_start(&idle_handle, idle_cb);

ns = uv_hrtime();
uv_run(loop);
ns = uv_hrtime() - ns;

ASSERT(ticks == NUM_TICKS);

LOGF("loop_count: %d ticks in %.2fs (%.0f/s)\n",
NUM_TICKS,
ns / 1e9,
NUM_TICKS / (ns / 1e9));

return 0;
}


BENCHMARK_IMPL(loop_count_timed) {
uv_loop_t* loop = uv_default_loop();

uv_idle_init(loop, &idle_handle);
uv_idle_start(&idle_handle, idle2_cb);

uv_timer_init(loop, &timer_handle);
uv_timer_start(&timer_handle, timer_cb, 5000, 0);

uv_run(loop);

LOGF("loop_count: %lu ticks (%.0f ticks/s)\n", ticks, ticks / 5.0);

0 comments on commit 3f37ba8

Please sign in to comment.
You can’t perform that action at this time.