tests: extract stdout redirection
[platform/core/system/dlog.git] / tests / performance_test.c
1 #define LOG_TAG "TEST"
2
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <string.h>
6 #include <pthread.h>
7 #include <time.h>
8
9 #include <dlog.h>
10
11 #define THREADS 50
12 #define LOGS_PER_THREAD 1000
13 #define TOTAL_LOGS (THREADS * LOGS_PER_THREAD)
14
15 #define SECOND_TO_MICROSECOND 1000000
16
17 void *func(void *data)
18 {
19         (void) data;
20         int i;
21
22         for (i = 0; i < (LOGS_PER_THREAD / 4); ++i) {
23                  LOGE("test");
24                 SLOGE("test");
25                 RLOGE("test");
26                 ALOGE("test");
27         }
28
29         return NULL;
30 }
31
32 int main(int argc, char **argv)
33 {
34         int i = 0;
35         struct timespec start, end;
36         double elapsed;
37         pthread_t threads[THREADS];
38
39         clock_gettime(CLOCK_MONOTONIC, &start);
40
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);
45
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);
49
50         return 0;
51 }