separate module.
CC=gcc
CFLAGS=-std=gnu99 -O2 -msse4.1 -g -Wall -Wextra
-LDFLAGS=-lm
+LDFLAGS=-lm -lrt
all: tests
-UNSTUFF_TEST_OBJS=unstuff.o unstuff_test.o
+UNSTUFF_TEST_OBJS=unstuff.o unstuff_test.o benchmark.o
unstuff_test: $(UNSTUFF_TEST_OBJS)
$(CC) $(LDFLAGS) -o $@ $(UNSTUFF_TEST_OBJS)
bytesource_test: $(BYTESOURCE_TEST_OBJS)
$(CC) $(LDFLAGS) -o $@ $(BYTESOURCE_TEST_OBJS)
-IDCT_TEST_OBJS=idct.o idct_test.o
+IDCT_TEST_OBJS=idct.o idct_test.o benchmark.o
idct_test: $(IDCT_TEST_OBJS)
$(CC) $(LDFLAGS) -o $@ $(IDCT_TEST_OBJS)
#include <stdlib.h>
#include <math.h>
#include <assert.h>
-#include <time.h>
-#include <sys/time.h>
+#include "benchmark.h"
#include "idct.h"
// Generate random coefficients in the range [-15..15].
quant[i] = 1;
}
- struct timeval start, now;
- gettimeofday(&start, NULL);
+ start_benchmark_timer();
for (unsigned i = 0; i < num_runs; ++i) {
(*idct)(coeff, quant, output);
}
- gettimeofday(&now, NULL);
-
- double diff = timediff(&start, &now);
- printf("%u runs in %.2f seconds = %.2f IDCTs/sec\n",
+ double diff = stop_benchmark_timer();
+ printf("%u runs in %.2f CPU seconds = %.2f IDCTs/sec\n",
num_runs, diff, num_runs / diff);
}
#include <stdio.h>
#include <string.h>
#include <assert.h>
-#include <time.h>
-#include <sys/time.h>
+#include "benchmark.h"
#include "unstuff.h"
void test_basic_unstuff(unstuff_func_t* unstuff)
}
}
-double timediff(const struct timeval* a, const struct timeval* b)
-{
- return (double)(b->tv_sec - a->tv_sec) +
- (double)(b->tv_usec - a->tv_usec) * 1e-6;
-}
-
void test_performance(unstuff_func_t* unstuff)
{
const size_t len = 4096;
uint8_t src[len], dst[len];
gen_random_stuffed_data(src, len);
- struct timeval start, now;
- gettimeofday(&start, NULL);
+ start_benchmark_timer();
for (unsigned i = 0; i < num_runs; ++i) {
int ret = unstuff(dst, src, len);
assert(ret != -1);
}
- gettimeofday(&now, NULL);
-
- double diff = timediff(&start, &now);
+ double diff = stop_benchmark_timer();
double mb_sec = (len * num_runs) / (1048576.0 * diff);
- printf("%u runs with %zu bytes in %.2f seconds = %.2f MB/sec\n",
+ printf("%u runs with %zu bytes in %.2f CPU seconds = %.2f MB/sec\n",
num_runs, len, diff, mb_sec);
}