diff options
Diffstat (limited to 'testing/embedding/perf-test.c')
-rw-r--r-- | testing/embedding/perf-test.c | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/testing/embedding/perf-test.c b/testing/embedding/perf-test.c deleted file mode 100644 index 2195bf5..0000000 --- a/testing/embedding/perf-test.c +++ /dev/null @@ -1,90 +0,0 @@ -#include <stdio.h> -#include <assert.h> -#include <sys/time.h> -#ifdef PTEST_USE_THREAD -# include <pthread.h> -static pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; -static pthread_cond_t cond1 = PTHREAD_COND_INITIALIZER; -static int remaining; -#endif - - -extern int add1(int, int); - - -static double time_delta(struct timeval *stop, struct timeval *start) -{ - return (stop->tv_sec - start->tv_sec) + - 1e-6 * (stop->tv_usec - start->tv_usec); -} - -static double measure(void) -{ - long long i, iterations; - int result; - struct timeval start, stop; - double elapsed; - - add1(0, 0); /* prepare off-line */ - - i = 0; - iterations = 1000; - result = gettimeofday(&start, NULL); - assert(result == 0); - - while (1) { - for (; i < iterations; i++) { - add1(((int)i) & 0xaaaaaa, ((int)i) & 0x555555); - } - result = gettimeofday(&stop, NULL); - assert(result == 0); - - elapsed = time_delta(&stop, &start); - assert(elapsed >= 0.0); - if (elapsed > 2.5) - break; - iterations = iterations * 3 / 2; - } - - return elapsed / (double)iterations; -} - -static void *start_routine(void *arg) -{ - double t = measure(); - printf("time per call: %.3g\n", t); - -#ifdef PTEST_USE_THREAD - pthread_mutex_lock(&mutex1); - remaining -= 1; - if (!remaining) - pthread_cond_signal(&cond1); - pthread_mutex_unlock(&mutex1); -#endif - - return arg; -} - - -int main(void) -{ -#ifndef PTEST_USE_THREAD - start_routine(0); -#else - pthread_t th; - int i, status; - - add1(0, 0); /* this is the main thread */ - - remaining = PTEST_USE_THREAD; - for (i = 0; i < PTEST_USE_THREAD; i++) { - status = pthread_create(&th, NULL, start_routine, NULL); - assert(status == 0); - } - pthread_mutex_lock(&mutex1); - while (remaining) - pthread_cond_wait(&cond1, &mutex1); - pthread_mutex_unlock(&mutex1); -#endif - return 0; -} |