From 837a962bf5473eeec1668de1104800ff4a53bdd1 Mon Sep 17 00:00:00 2001 From: Calin Juravle Date: Tue, 16 Sep 2014 18:01:44 +0100 Subject: [PATCH] Add benchmarks for pthread_rw_locks Benchmarks for the following sequences: 1) pthread_rwlock_rdlock -> pthread_rwlock_unlock 2) pthread_rwlock_wrlock -> pthread_rwlock_unlock Change-Id: I8d87d4d8afab8637ea7ff5d23a0b3a81d6d40835 --- benchmarks/pthread_benchmark.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/benchmarks/pthread_benchmark.cpp b/benchmarks/pthread_benchmark.cpp index c010dd2c0..11db56d1c 100644 --- a/benchmarks/pthread_benchmark.cpp +++ b/benchmarks/pthread_benchmark.cpp @@ -105,3 +105,35 @@ static void BM_pthread_mutex_lock_RECURSIVE(int iters) { StopBenchmarkTiming(); } BENCHMARK(BM_pthread_mutex_lock_RECURSIVE); + +static void BM_pthread_rw_lock_read(int iters) { + StopBenchmarkTiming(); + pthread_rwlock_t lock; + pthread_rwlock_init(&lock, NULL); + StartBenchmarkTiming(); + + for (int i = 0; i < iters; ++i) { + pthread_rwlock_rdlock(&lock); + pthread_rwlock_unlock(&lock); + } + + StopBenchmarkTiming(); + pthread_rwlock_destroy(&lock); +} +BENCHMARK(BM_pthread_rw_lock_read); + +static void BM_pthread_rw_lock_write(int iters) { + StopBenchmarkTiming(); + pthread_rwlock_t lock; + pthread_rwlock_init(&lock, NULL); + StartBenchmarkTiming(); + + for (int i = 0; i < iters; ++i) { + pthread_rwlock_wrlock(&lock); + pthread_rwlock_unlock(&lock); + } + + StopBenchmarkTiming(); + pthread_rwlock_destroy(&lock); +} +BENCHMARK(BM_pthread_rw_lock_write);