12 #define LOGS_PER_THREAD 1000
13 #define TOTAL_LOGS (THREADS * LOGS_PER_THREAD)
15 #define SECOND_TO_MICROSECOND 1000000
17 void *func(void *data)
22 for (i = 0; i < (LOGS_PER_THREAD / 4); ++i) {
32 int main(int argc, char **argv)
35 struct timespec start, end;
37 pthread_t threads[THREADS];
39 clock_gettime(CLOCK_MONOTONIC, &start);
41 for (i = 0; i < THREADS; ++i)
42 pthread_create(threads + i, NULL, func, NULL);
43 for (i = 0; i < THREADS; ++i)
44 pthread_join(threads[i], NULL);
46 clock_gettime(CLOCK_MONOTONIC, &end);
47 elapsed = (end.tv_sec - start.tv_sec) + (end.tv_nsec - start.tv_nsec) / 1E9;
48 printf("%d threads %d logs each (total logs %d). Total time %lfs (%lf us each)\n", THREADS, LOGS_PER_THREAD, TOTAL_LOGS, elapsed, SECOND_TO_MICROSECOND * elapsed / TOTAL_LOGS);