我为LinkedList编写了一个多线程C代码。我正在尝试测量代码的吞吐量和延迟。为了测量吞吐量,这是我的代码
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();
}
我是否正确测量了这两个参数,还是有其他方法可以做到这一点?
提前致谢!
答案 0 :(得分: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);