7 static double gettimedouble(
void) {
9 gettimeofday(&tv, NULL);
10 return tv.tv_usec * 0.000001 + tv.tv_sec;
26 static void run_benchmark(
char *
name,
void (*benchmark)(
void*),
void (*setup)(
void*),
void (*teardown)(
void*),
void* data,
int count,
int iter) {
28 double min = HUGE_VAL;
31 for (i = 0; i < count; i++) {
36 begin = gettimedouble();
38 total = gettimedouble() - begin;
39 if (teardown != NULL) {
59 static void bench_AES128_init(
void* data) {
62 for (i = 0; i < 50000; i++) {
67 static void bench_AES128_encrypt_setup(
void* data) {
69 static const unsigned char key[16] = {0};
73 static void bench_AES128_encrypt(
void* data) {
75 unsigned char scratch[16] = {0};
77 for (i = 0; i < 4000000 / 16; i++) {
82 static void bench_AES128_decrypt(
void* data) {
84 unsigned char scratch[16] = {0};
86 for (i = 0; i < 4000000 / 16; i++) {
91 static void bench_AES192_init(
void* data) {
94 for (i = 0; i < 50000; i++) {
99 static void bench_AES192_encrypt_setup(
void* data) {
101 static const unsigned char key[16] = {0};
105 static void bench_AES192_encrypt(
void* data) {
107 unsigned char scratch[16] = {0};
109 for (i = 0; i < 4000000 / 16; i++) {
114 static void bench_AES192_decrypt(
void* data) {
116 unsigned char scratch[16] = {0};
118 for (i = 0; i < 4000000 / 16; i++) {
123 static void bench_AES256_init(
void* data) {
126 for (i = 0; i < 50000; i++) {
132 static void bench_AES256_encrypt_setup(
void* data) {
134 static const unsigned char key[16] = {0};
138 static void bench_AES256_encrypt(
void* data) {
140 unsigned char scratch[16] = {0};
142 for (i = 0; i < 4000000 / 16; i++) {
147 static void bench_AES256_decrypt(
void* data) {
149 unsigned char scratch[16] = {0};
151 for (i = 0; i < 4000000 / 16; i++) {
160 run_benchmark(
"aes128_init", bench_AES128_init, NULL, NULL, &ctx128, 20, 50000);
161 run_benchmark(
"aes128_encrypt_byte", bench_AES128_encrypt, bench_AES128_encrypt_setup, NULL, &ctx128, 20, 4000000);
162 run_benchmark(
"aes128_decrypt_byte", bench_AES128_decrypt, bench_AES128_encrypt_setup, NULL, &ctx128, 20, 4000000);
163 run_benchmark(
"aes192_init", bench_AES192_init, NULL, NULL, &ctx192, 20, 50000);
164 run_benchmark(
"aes192_encrypt_byte", bench_AES192_encrypt, bench_AES192_encrypt_setup, NULL, &ctx192, 20, 4000000);
165 run_benchmark(
"aes192_decrypt_byte", bench_AES192_decrypt, bench_AES192_encrypt_setup, NULL, &ctx192, 20, 4000000);
166 run_benchmark(
"aes256_init", bench_AES256_init, NULL, NULL, &ctx256, 20, 50000);
167 run_benchmark(
"aes256_encrypt_byte", bench_AES256_encrypt, bench_AES256_encrypt_setup, NULL, &ctx256, 20, 4000000);
168 run_benchmark(
"aes256_decrypt_byte", bench_AES256_decrypt, bench_AES256_encrypt_setup, NULL, &ctx256, 20, 4000000);