Измерение пропускной способности и задержки кода

Я написал многопоточный код C для LinkedList. Я пытаюсь измерить пропускную способность и задержку кода. Для измерения пропускной способности, вот мой код

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();

А для латентности это выглядит следующим образом

void * thread1(void * args)

{
  clock_t begin = clock();

 /* LinkedList Operations */

  clock_t begin = clock();
}

Правильно ли я измеряю эти два параметра или есть другой способ сделать это?

Заранее спасибо!

1 ответ

Решение

Мои личные предпочтения примерно такие:

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);
Другие вопросы по тегам