1

I have written a multithreaded C code for LinkedList. I am trying to measure the throughput and latency of the code. For measuring throughput, here is my code

clock_t begin = clock();    
    pthread_create (&t1, NULL, thread1, (void *)head);
    pthread_create (&t2, NULL, thread2, (void *)head);
    pthread_create (&t3, NULL, thread3, (void *)head);
    pthread_create (&t4, NULL, thread4, (void *)head);
    pthread_join (t1, NULL);
    pthread_join (t2, NULL);
    pthread_join (t3, NULL);
    pthread_join (t4, NULL);
clock_t end = clock();

And for latency it is as follows

void * thread1(void * args)

{
  clock_t begin = clock();

 /* LinkedList Operations */

  clock_t begin = clock();
}

Am I measuring this two parameters correctly or is there some other way to do it?

Thanks in advance!

Ritesh
  • 67
  • 8

1 Answers1

2

My personal preference is something like this:

struct timespec start, end;
clock_gettime(CLOCK_MONOTONIC_RAW, &start);
sleep(1);
clock_gettime(CLOCK_MONOTONIC_RAW, &end);
const uint64_t ns = (end.tv_sec * 1000000000 + end.tv_nsec) - (start.tv_sec * 1000000000 + start.tv_nsec);
printf("elapsed %7.02f ms (%lu ns)\n", ns / 1000000.0, ns);
Javon
  • 55
  • 1
  • 4