bench_locks.c revision ab8beedeb70c6941e0ff68014d8db64cee4ef15d
1/* a small program to benchmark locking primitives with different implementations */
2
3#include <pthread.h>
4#include <sys/time.h>
5#include <stdio.h>
6
7static double  now(void)
8{
9    struct timeval   tv;
10    gettimeofday(&tv, NULL);
11    return tv.tv_sec + tv.tv_usec/1000000.0;
12}
13
14int  main( void )
15{
16    double             t0, t1;
17    pthread_mutex_t    lock1 = PTHREAD_MUTEX_INITIALIZER;
18    int volatile       lock2 = 0;
19    long               count;
20    const long         ITERATIONS = 1000000;
21
22    /* pthread_mutex_lock */
23    t0 = now();
24    for (count = ITERATIONS; count > 0; count--) {
25        pthread_mutex_lock(&lock1);
26        pthread_mutex_unlock(&lock1);
27    }
28    t1 = now() - t0;
29    printf( "pthread_mutex_lock/unlock:  %.5g us/op\n", (t1*1000000.0)/ITERATIONS );
30
31    return 0;
32}
33