Dumping cmph_uint32.

This commit is contained in:
Davi de Castro Reis
2011-02-13 20:40:26 -02:00
parent 2a35666bfa
commit 5b78c02da0
14 changed files with 197 additions and 145 deletions

View File

@@ -1,4 +1,5 @@
bin_PROGRAMS = cmph
check_PROGRAMS = cmph_benchmark_test
lib_LTLIBRARIES = libcmph.la
include_HEADERS = cmph.h cmph_types.h cmph_time.h chd_ph.h
libcmph_la_SOURCES = hash.h hash.c \
@@ -30,3 +31,6 @@ libcmph_la_LDFLAGS = -version-info 0:0:0
cmph_SOURCES = main.c wingetopt.h wingetopt.c
cmph_LDADD = libcmph.la
cmph_benchmark_test_SOURCES = cmph_benchmark_test.cc
cmph_benchmark_test_LDADD = libcmph.la

View File

@@ -1,3 +1,5 @@
// A simple benchmark tool around getrusage
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
@@ -42,17 +44,19 @@ int timeval_subtract (
benchmark_t* find_benchmark(const char* name) {
benchmark_t* benchmark = global_benchmarks;
while (benchmark->name != NULL) if (strcmp(benchmark->name, name) != 0) break;
if (!benchmark->name) return NULL;
while (benchmark && benchmark->name != NULL) {
if (strcmp(benchmark->name, name) == 0) break;
++benchmark;
}
if (!benchmark || !benchmark->name) return NULL;
return benchmark;
}
int global_benchmarks_length() {
benchmark_t* benchmark;
benchmark_t* benchmark = global_benchmarks;
int length = 0;
if (global_benchmarks == 0) return 0;
benchmark = global_benchmarks;
while (benchmark->name != NULL) ++length;
if (benchmark == NULL) return 0;
while (benchmark->name != NULL) ++length, ++benchmark;
return length;
}
@@ -62,8 +66,11 @@ void bm_register(const char* name, void (*func)(int), int iters) {
benchmark.name = name;
benchmark.func = func;
assert(!find_benchmark(name));
global_benchmarks = realloc(global_benchmarks, length + 1);
global_benchmarks = realloc(
global_benchmarks, (length + 2)*sizeof(benchmark_t));
global_benchmarks[length] = benchmark;
memset(&benchmark, 0, sizeof(benchmark_t)); // pivot
global_benchmarks[length + 1] = benchmark;
}
void bm_start(const char* name) {
@@ -71,6 +78,7 @@ void bm_start(const char* name) {
struct rusage rs;
benchmark = find_benchmark(name);
assert(benchmark);
int ret = getrusage(RUSAGE_SELF, &rs);
if (ret != 0) {
perror("rusage failed");
@@ -98,6 +106,19 @@ void bm_end(const char* name) {
struct timeval stime;
timeval_subtract(&stime, &benchmark->end.ru_stime, &benchmark->begin.ru_stime);
printf("User cpu time used: %ld.%6ld\n", utime.tv_sec, utime.tv_usec);
printf("System cpu time used: %ld.%6ld\n", stime.tv_sec, stime.tv_usec);
printf("Benchmark: %s\n", benchmark->name);
printf("User time used : %ld.%6ld\n", utime.tv_sec, utime.tv_usec);
printf("System time used: %ld.%6ld\n", stime.tv_sec, stime.tv_usec);
printf("Wall time used : %ld.%6ld\n", stime.tv_sec, stime.tv_usec);
printf("\n");
}
void run_benchmarks(int argc, char** argv) {
benchmark_t* benchmark = global_benchmarks;
while (benchmark && benchmark->name != NULL) {
bm_start(benchmark->name);
bm_end(benchmark->name);
++benchmark;
}
}

View File

@@ -9,7 +9,7 @@ extern "C"
{
#endif
#define BM_REGISTER(func, iters) bm_register(##func, func, iters);
#define BM_REGISTER(func, iters) bm_register(#func, func, iters)
void bm_register(const char* name, void (*func)(int), int iters);
void run_benchmarks(int argc, char** argv);

View File

@@ -0,0 +1,22 @@
#include <unistd.h> // for sleep
#include <limits.h>
#include "cmph_benchmark.h"
void bm_sleep(int iters) {
sleep(1);
}
void bm_increment(int iters) {
int i, v = 0;
for (i = 0; i < INT_MAX; ++i) {
v += i;
}
}
int main(int argc, char** argv) {
BM_REGISTER(bm_sleep, 1);
BM_REGISTER(bm_increment, 1);
run_benchmarks(argc, argv);
}