|
|
|
@ -149,6 +149,33 @@ static void BM_PollEmptyPollset(benchmark::State& state) { |
|
|
|
|
} |
|
|
|
|
BENCHMARK(BM_PollEmptyPollset); |
|
|
|
|
|
|
|
|
|
static void BM_PollAddFd(benchmark::State& state) { |
|
|
|
|
TrackCounters track_counters; |
|
|
|
|
size_t ps_sz = grpc_pollset_size(); |
|
|
|
|
grpc_pollset* ps = static_cast<grpc_pollset*>(gpr_zalloc(ps_sz)); |
|
|
|
|
gpr_mu* mu; |
|
|
|
|
grpc_pollset_init(ps, &mu); |
|
|
|
|
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; |
|
|
|
|
grpc_wakeup_fd wakeup_fd; |
|
|
|
|
GPR_ASSERT(GRPC_LOG_IF_ERROR("wakeup_fd_init", grpc_wakeup_fd_init(&wakeup_fd))); |
|
|
|
|
grpc_fd *fd = grpc_fd_create(wakeup_fd.read_fd, "xxx"); |
|
|
|
|
while (state.KeepRunning()) { |
|
|
|
|
grpc_pollset_add_fd(&exec_ctx, ps, fd); |
|
|
|
|
grpc_exec_ctx_flush(&exec_ctx); |
|
|
|
|
} |
|
|
|
|
grpc_fd_orphan(&exec_ctx, fd, NULL, NULL, "xxx"); |
|
|
|
|
grpc_closure shutdown_ps_closure; |
|
|
|
|
grpc_closure_init(&shutdown_ps_closure, shutdown_ps, ps, |
|
|
|
|
grpc_schedule_on_exec_ctx); |
|
|
|
|
gpr_mu_lock(mu);
|
|
|
|
|
grpc_pollset_shutdown(&exec_ctx, ps, &shutdown_ps_closure); |
|
|
|
|
gpr_mu_unlock(mu); |
|
|
|
|
grpc_exec_ctx_finish(&exec_ctx); |
|
|
|
|
gpr_free(ps); |
|
|
|
|
track_counters.Finish(state); |
|
|
|
|
} |
|
|
|
|
BENCHMARK(BM_PollAddFd); |
|
|
|
|
|
|
|
|
|
class Closure : public grpc_closure { |
|
|
|
|
public: |
|
|
|
|
virtual ~Closure() {} |
|
|
|
|