diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libstrongswan/plugins/bliss/tests/suites/test_bliss_fft.c | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/src/libstrongswan/plugins/bliss/tests/suites/test_bliss_fft.c b/src/libstrongswan/plugins/bliss/tests/suites/test_bliss_fft.c index 009aaf802..6ad1e5da6 100644 --- a/src/libstrongswan/plugins/bliss/tests/suites/test_bliss_fft.c +++ b/src/libstrongswan/plugins/bliss/tests/suites/test_bliss_fft.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014 Andreas Steffen + * Copyright (C) 2014-2016 Andreas Steffen * HSR Hochschule fuer Technik Rapperswil * * This program is free software; you can redistribute it and/or modify it @@ -17,6 +17,8 @@ #include <bliss_fft.h> +#include <time.h> + static bliss_fft_params_t *fft_params[] = { &bliss_fft_17_8, &bliss_fft_12289_512 @@ -91,6 +93,40 @@ START_TEST(test_bliss_fft_wrap) } END_TEST +START_TEST(test_bliss_fft_speed) +{ + bliss_fft_t *fft; + struct timespec start, stop; + uint16_t n = bliss_fft_12289_512.n; + uint32_t x[n], X[n]; + int i, m, count = 100000; + + for (i = 0; i < n; i++) + { + x[i] = i; + } + fft = bliss_fft_create(&bliss_fft_12289_512); + + clock_gettime(CLOCK_THREAD_CPUTIME_ID, &start); + for (m = 0; m < count; m++) + { + fft->transform(fft, x, X, FALSE); + fft->transform(fft, X, x, TRUE); + } + clock_gettime(CLOCK_THREAD_CPUTIME_ID, &stop); + + DBG0(DBG_LIB, "%d FFT loops in %d ms\n", count, + (stop.tv_nsec - start.tv_nsec) / 1000000 + + (stop.tv_sec - start.tv_sec) * 1000); + + for (i = 0; i < n; i++) + { + ck_assert(x[i] == i); + } + fft->destroy(fft); +} +END_TEST + Suite *bliss_fft_suite_create() { Suite *s; @@ -106,5 +142,10 @@ Suite *bliss_fft_suite_create() tcase_add_loop_test(tc, test_bliss_fft_wrap, 0, countof(fft_params)); suite_add_tcase(s, tc); + tc = tcase_create("speed"); + tcase_set_timeout(tc, 10); + tcase_add_test(tc, test_bliss_fft_speed); + suite_add_tcase(s, tc); + return s; } |