Измерение пропускной способности и задержки кода
Я написал многопоточный код 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);