]> git.sesse.net Git - fjl/commitdiff
Measure CPU seconds instead of wall time, and move the timing functions into a
authorSteinar H. Gunderson <sesse@debian.org>
Sun, 11 Jan 2009 18:33:32 +0000 (19:33 +0100)
committerSteinar H. Gunderson <sesse@debian.org>
Sun, 11 Jan 2009 18:33:32 +0000 (19:33 +0100)
separate module.

Makefile
idct_test.c
unstuff_test.c

index 926fa57317ff1cb35e75d80356f0f95244be5387..c3e6ff7d09f6b2e1228931a46ef1bf0ab91fc626 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,10 @@
 CC=gcc
 CFLAGS=-std=gnu99 -O2 -msse4.1 -g -Wall -Wextra
 CC=gcc
 CFLAGS=-std=gnu99 -O2 -msse4.1 -g -Wall -Wextra
-LDFLAGS=-lm
+LDFLAGS=-lm -lrt
 
 all: tests
 
 
 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)
 
 unstuff_test: $(UNSTUFF_TEST_OBJS)
        $(CC) $(LDFLAGS) -o $@ $(UNSTUFF_TEST_OBJS)
 
@@ -20,7 +20,7 @@ BYTESOURCE_TEST_OBJS=bytesource.o choice.o unstuff.o bytesource_test.o
 bytesource_test: $(BYTESOURCE_TEST_OBJS)
        $(CC) $(LDFLAGS) -o $@ $(BYTESOURCE_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)
 
 idct_test: $(IDCT_TEST_OBJS)
        $(CC) $(LDFLAGS) -o $@ $(IDCT_TEST_OBJS)
 
index e35a17b1b760edbe8ea104ea239abef5160ab7d4..cf2556bd2fc5ee87f85d2eac09d62d48e46e5955 100644 (file)
@@ -3,9 +3,8 @@
 #include <stdlib.h>
 #include <math.h>
 #include <assert.h>
 #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].
 #include "idct.h"
 
 // Generate random coefficients in the range [-15..15].
@@ -99,17 +98,14 @@ void test_performance(idct_func_t* idct)
                quant[i] = 1;
        }
 
                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);
        }
        
 
        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);
 }
 
                num_runs, diff, num_runs / diff);
 }
 
index 863aef500c041f198d84482e81cae128a56b3b14..a5bf92d9a2e0f88283bd5efbe0f2775d6882ad50 100644 (file)
@@ -1,9 +1,8 @@
 #include <stdio.h>
 #include <string.h>
 #include <assert.h>
 #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)
 #include "unstuff.h"
 
 void test_basic_unstuff(unstuff_func_t* unstuff)
@@ -67,12 +66,6 @@ void gen_random_stuffed_data(uint8_t* dst, size_t len)
        }
 }
 
        }
 }
 
-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;
 void test_performance(unstuff_func_t* unstuff)
 {
        const size_t len = 4096;
@@ -81,19 +74,16 @@ void test_performance(unstuff_func_t* unstuff)
        uint8_t src[len], dst[len];
        gen_random_stuffed_data(src, len);
 
        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);
        }
        
 
        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);
        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);
 }
 
                num_runs, len, diff, mb_sec);
 }