You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by nw...@apache.org on 2013/07/30 11:29:01 UTC
[lucy-commits] git commit: refs/heads/method-dispatch-benchmark - Move method
dispatch benchmark to clownfish/devel
Updated Branches:
refs/heads/method-dispatch-benchmark f53d99c1a -> 9770cb3a1
Move method dispatch benchmark to clownfish/devel
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/9770cb3a
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/9770cb3a
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/9770cb3a
Branch: refs/heads/method-dispatch-benchmark
Commit: 9770cb3a1c3ead1dec6a3170e878392838104ce9
Parents: f53d99c
Author: Nick Wellnhofer <we...@aevum.de>
Authored: Tue Jul 30 11:28:25 2013 +0200
Committer: Nick Wellnhofer <we...@aevum.de>
Committed: Tue Jul 30 11:28:25 2013 +0200
----------------------------------------------------------------------
.../devel/benchmarks/method_dispatch/.gitignore | 3 +
.../benchmarks/method_dispatch/Makefile.darwin | 16 ++
.../benchmarks/method_dispatch/Makefile.linux | 16 ++
.../devel/benchmarks/method_dispatch/dso.c | 51 ++++++
.../devel/benchmarks/method_dispatch/dso.h | 18 ++
.../devel/benchmarks/method_dispatch/exe.c | 166 +++++++++++++++++++
clownfish/devel/benchmarks/method_dispatch/oo.h | 24 +++
devel/benchmarks/method_dispatch/.gitignore | 3 -
.../benchmarks/method_dispatch/Makefile.darwin | 16 --
devel/benchmarks/method_dispatch/Makefile.linux | 16 --
devel/benchmarks/method_dispatch/dso.c | 51 ------
devel/benchmarks/method_dispatch/dso.h | 18 --
devel/benchmarks/method_dispatch/exe.c | 166 -------------------
devel/benchmarks/method_dispatch/oo.h | 24 ---
14 files changed, 294 insertions(+), 294 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucy/blob/9770cb3a/clownfish/devel/benchmarks/method_dispatch/.gitignore
----------------------------------------------------------------------
diff --git a/clownfish/devel/benchmarks/method_dispatch/.gitignore b/clownfish/devel/benchmarks/method_dispatch/.gitignore
new file mode 100644
index 0000000..a82daf4
--- /dev/null
+++ b/clownfish/devel/benchmarks/method_dispatch/.gitignore
@@ -0,0 +1,3 @@
+dso.dylib
+dso.so
+exe
http://git-wip-us.apache.org/repos/asf/lucy/blob/9770cb3a/clownfish/devel/benchmarks/method_dispatch/Makefile.darwin
----------------------------------------------------------------------
diff --git a/clownfish/devel/benchmarks/method_dispatch/Makefile.darwin b/clownfish/devel/benchmarks/method_dispatch/Makefile.darwin
new file mode 100644
index 0000000..6ee18c5
--- /dev/null
+++ b/clownfish/devel/benchmarks/method_dispatch/Makefile.darwin
@@ -0,0 +1,16 @@
+CFLAGS = -std=gnu99 -Wextra -O2 -fomit-frame-pointer -DHAS_ALIAS
+
+all : bench
+
+dso.dylib : dso.c dso.h oo.h
+ gcc $(CFLAGS) -Wl,-alias,_thunk3,_Obj_Hello_THUNK -shared dso.c -o $@
+
+exe : exe.c dso.h oo.h dso.dylib
+ gcc $(CFLAGS) exe.c dso.dylib -o $@
+
+bench : exe
+ ./exe
+
+clean :
+ rm -f dso.dylib exe
+
http://git-wip-us.apache.org/repos/asf/lucy/blob/9770cb3a/clownfish/devel/benchmarks/method_dispatch/Makefile.linux
----------------------------------------------------------------------
diff --git a/clownfish/devel/benchmarks/method_dispatch/Makefile.linux b/clownfish/devel/benchmarks/method_dispatch/Makefile.linux
new file mode 100644
index 0000000..8938e60
--- /dev/null
+++ b/clownfish/devel/benchmarks/method_dispatch/Makefile.linux
@@ -0,0 +1,16 @@
+CFLAGS = -std=gnu99 -Wextra -O2 -fomit-frame-pointer
+
+all : bench
+
+dso.so : dso.c dso.h oo.h
+ gcc $(CFLAGS) -shared -fPIC dso.c -o $@
+
+exe : exe.c dso.h oo.h dso.so
+ gcc $(CFLAGS) -fPIE exe.c dso.so -o $@
+
+bench : exe
+ LD_LIBRARY_PATH=. ./exe
+
+clean :
+ rm -f dso.so exe
+
http://git-wip-us.apache.org/repos/asf/lucy/blob/9770cb3a/clownfish/devel/benchmarks/method_dispatch/dso.c
----------------------------------------------------------------------
diff --git a/clownfish/devel/benchmarks/method_dispatch/dso.c b/clownfish/devel/benchmarks/method_dispatch/dso.c
new file mode 100644
index 0000000..2cb9f20
--- /dev/null
+++ b/clownfish/devel/benchmarks/method_dispatch/dso.c
@@ -0,0 +1,51 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "dso.h"
+
+static void Obj_hello(obj_t *obj);
+
+void thunk3(obj_t *obj);
+
+class_t *OBJ;
+size_t Obj_Hello_OFFSET;
+method_t Obj_Hello_THUNK_PTR;
+
+void
+bootstrap() {
+ size_t method_idx = 3;
+ size_t class_size = offsetof(class_t, vtable)
+ + (method_idx + 1) * sizeof(method_t);
+
+ OBJ = (class_t*)calloc(1, class_size);
+
+ OBJ->name = "Obj";
+ OBJ->class_size = class_size;
+
+ Obj_Hello_OFFSET = offsetof(class_t, vtable)
+ + method_idx * sizeof(method_t);
+ OBJ->vtable[method_idx] = Obj_hello;
+ Obj_Hello_THUNK_PTR = thunk3;
+}
+
+obj_t*
+Obj_new() {
+ obj_t *self = (obj_t *)malloc(sizeof(obj_t));
+
+ self->refcount = 1;
+ self->klass = OBJ;
+ self->value = 0;
+
+ return self;
+}
+
+static void
+Obj_hello(obj_t *obj) {
+ ++obj->value;
+}
+
+void
+thunk3(obj_t *obj) {
+ obj->klass->vtable[3](obj);
+}
+
http://git-wip-us.apache.org/repos/asf/lucy/blob/9770cb3a/clownfish/devel/benchmarks/method_dispatch/dso.h
----------------------------------------------------------------------
diff --git a/clownfish/devel/benchmarks/method_dispatch/dso.h b/clownfish/devel/benchmarks/method_dispatch/dso.h
new file mode 100644
index 0000000..f69aaed
--- /dev/null
+++ b/clownfish/devel/benchmarks/method_dispatch/dso.h
@@ -0,0 +1,18 @@
+#ifndef DSO_H
+#define DSO_H
+
+#include "oo.h"
+
+extern class_t *OBJ;
+extern size_t Obj_Hello_OFFSET;
+extern method_t Obj_Hello_THUNK_PTR;
+#define Obj_Hello_FIXED_OFFSET (5 * sizeof(void*))
+
+void bootstrap();
+
+obj_t *Obj_new(void);
+
+void Obj_Hello_THUNK(obj_t *obj);
+
+#endif /* DSO_H */
+
http://git-wip-us.apache.org/repos/asf/lucy/blob/9770cb3a/clownfish/devel/benchmarks/method_dispatch/exe.c
----------------------------------------------------------------------
diff --git a/clownfish/devel/benchmarks/method_dispatch/exe.c b/clownfish/devel/benchmarks/method_dispatch/exe.c
new file mode 100644
index 0000000..4e0b5d6
--- /dev/null
+++ b/clownfish/devel/benchmarks/method_dispatch/exe.c
@@ -0,0 +1,166 @@
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/time.h>
+
+#include "dso.h"
+
+#define CPUFREQ UINT64_C(2800000000)
+#define NOINLINE __attribute__ ((noinline))
+uint64_t iterations;
+#define ITERATIONS iterations
+
+static inline method_t
+Obj_Hello_PTR(obj_t *obj) {
+ class_t *klass = obj->klass;
+ return *(method_t*)((char*)klass + Obj_Hello_OFFSET);
+}
+
+static inline void
+Obj_Hello(obj_t *obj) {
+ class_t *klass = obj->klass;
+ method_t method = *(method_t*)((char*)klass + Obj_Hello_OFFSET);
+ method(obj);
+}
+
+static inline void
+Obj_Hello_FIXED(obj_t *obj) {
+ class_t *klass = obj->klass;
+ method_t method = *(method_t*)((char*)klass + Obj_Hello_FIXED_OFFSET);
+ method(obj);
+}
+
+void
+loop_with_method_ptr(obj_t *obj) {
+ method_t method = Obj_Hello_PTR(obj);
+
+ for (uint64_t i = 0; i < ITERATIONS; ++i) {
+ method(obj);
+ }
+}
+
+void
+loop_with_wrapper(obj_t *obj) {
+ for (uint64_t i = 0; i < ITERATIONS; ++i) {
+ Obj_Hello(obj);
+ }
+}
+
+void
+loop_with_fixed_offset_wrapper(obj_t *obj) {
+ for (uint64_t i = 0; i < ITERATIONS; ++i) {
+ Obj_Hello_FIXED(obj);
+ }
+}
+
+#ifdef HAS_ALIAS
+void
+loop_with_thunk(obj_t *obj) {
+ for (uint64_t i = 0; i < ITERATIONS; ++i) {
+ Obj_Hello_THUNK(obj);
+ }
+}
+
+void
+loop_with_thunk_ptr(obj_t *obj) {
+ for (uint64_t i = 0; i < ITERATIONS; ++i) {
+ Obj_Hello_THUNK_PTR(obj);
+ }
+}
+#endif
+
+NOINLINE void
+single_call_with_wrapper(obj_t *obj) {
+ Obj_Hello(obj);
+}
+
+void
+call_with_wrapper(obj_t *obj) {
+ for (uint64_t i = 0; i < ITERATIONS; ++i) {
+ single_call_with_wrapper(obj);
+ }
+}
+
+#ifdef HAS_ALIAS
+NOINLINE void
+single_call_with_thunk(obj_t *obj) {
+ Obj_Hello_THUNK(obj);
+}
+
+void
+call_with_thunk_ptr(obj_t *obj) {
+ for (uint64_t i = 0; i < ITERATIONS; ++i) {
+ single_call_with_thunk(obj);
+ }
+}
+
+NOINLINE void
+single_call_with_thunk_ptr(obj_t *obj) {
+ Obj_Hello_THUNK_PTR(obj);
+}
+
+void
+call_with_thunk(obj_t *obj) {
+ for (uint64_t i = 0; i < ITERATIONS; ++i) {
+ single_call_with_thunk(obj);
+ }
+}
+#endif
+
+void
+loop_with_simulated_inline(obj_t *obj) {
+ for (uint64_t i = 0; i < ITERATIONS; ++i) {
+ obj->value++;
+ }
+}
+
+static void
+bench(method_t fn, const char *name) {
+ obj_t *obj = Obj_new();
+
+ struct timeval t0;
+ gettimeofday(&t0, NULL);
+
+ fn(obj);
+
+ struct timeval t1;
+ gettimeofday(&t1, NULL);
+
+ if (obj->value != ITERATIONS) {
+ fprintf(stderr, "Unexpected obj->value: %" PRIu64 "\n", obj->value);
+ abort();
+ }
+
+ uint64_t usec = (uint64_t)(t1.tv_sec - t0.tv_sec) * 1000000
+ + (t1.tv_usec - t0.tv_usec);
+ printf("cycles/call with %s: %f\n", name,
+ ((double)usec * CPUFREQ) / (1000000.0 * ITERATIONS));
+}
+
+int
+main(int argc, char **argv) {
+ if (argc > 1) {
+ iterations = strtoll(argv[1], NULL, 10);
+ }
+ else {
+ iterations = UINT64_C(1000000000);
+ }
+ bootstrap();
+
+ bench(loop_with_method_ptr, "method ptr loop");
+ bench(loop_with_wrapper, "wrapper loop");
+ bench(loop_with_fixed_offset_wrapper, "fixed offset wrapper loop");
+#ifdef HAS_ALIAS
+ bench(loop_with_thunk, "thunk loop");
+ bench(loop_with_thunk_ptr, "thunk ptr loop");
+#endif
+ bench(call_with_wrapper, "wrapper");
+#ifdef HAS_ALIAS
+ bench(call_with_thunk, "thunk");
+ bench(call_with_thunk_ptr, "thunk ptr");
+#endif
+ bench(loop_with_simulated_inline, "simulated inline");
+
+ return 0;
+}
+
http://git-wip-us.apache.org/repos/asf/lucy/blob/9770cb3a/clownfish/devel/benchmarks/method_dispatch/oo.h
----------------------------------------------------------------------
diff --git a/clownfish/devel/benchmarks/method_dispatch/oo.h b/clownfish/devel/benchmarks/method_dispatch/oo.h
new file mode 100644
index 0000000..a08e843
--- /dev/null
+++ b/clownfish/devel/benchmarks/method_dispatch/oo.h
@@ -0,0 +1,24 @@
+#ifndef OO_H
+#define OO_H
+
+#include <stddef.h>
+#include <stdint.h>
+
+typedef struct class_t class_t;
+
+typedef struct obj_t {
+ size_t refcount;
+ class_t *klass;
+ uint64_t value;
+} obj_t;
+
+typedef void (*method_t)(obj_t *obj);
+
+struct class_t {
+ char *name;
+ size_t class_size;
+ method_t vtable[1];
+};
+
+#endif /* OO_H */
+
http://git-wip-us.apache.org/repos/asf/lucy/blob/9770cb3a/devel/benchmarks/method_dispatch/.gitignore
----------------------------------------------------------------------
diff --git a/devel/benchmarks/method_dispatch/.gitignore b/devel/benchmarks/method_dispatch/.gitignore
deleted file mode 100644
index a82daf4..0000000
--- a/devel/benchmarks/method_dispatch/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-dso.dylib
-dso.so
-exe
http://git-wip-us.apache.org/repos/asf/lucy/blob/9770cb3a/devel/benchmarks/method_dispatch/Makefile.darwin
----------------------------------------------------------------------
diff --git a/devel/benchmarks/method_dispatch/Makefile.darwin b/devel/benchmarks/method_dispatch/Makefile.darwin
deleted file mode 100644
index 6ee18c5..0000000
--- a/devel/benchmarks/method_dispatch/Makefile.darwin
+++ /dev/null
@@ -1,16 +0,0 @@
-CFLAGS = -std=gnu99 -Wextra -O2 -fomit-frame-pointer -DHAS_ALIAS
-
-all : bench
-
-dso.dylib : dso.c dso.h oo.h
- gcc $(CFLAGS) -Wl,-alias,_thunk3,_Obj_Hello_THUNK -shared dso.c -o $@
-
-exe : exe.c dso.h oo.h dso.dylib
- gcc $(CFLAGS) exe.c dso.dylib -o $@
-
-bench : exe
- ./exe
-
-clean :
- rm -f dso.dylib exe
-
http://git-wip-us.apache.org/repos/asf/lucy/blob/9770cb3a/devel/benchmarks/method_dispatch/Makefile.linux
----------------------------------------------------------------------
diff --git a/devel/benchmarks/method_dispatch/Makefile.linux b/devel/benchmarks/method_dispatch/Makefile.linux
deleted file mode 100644
index 8938e60..0000000
--- a/devel/benchmarks/method_dispatch/Makefile.linux
+++ /dev/null
@@ -1,16 +0,0 @@
-CFLAGS = -std=gnu99 -Wextra -O2 -fomit-frame-pointer
-
-all : bench
-
-dso.so : dso.c dso.h oo.h
- gcc $(CFLAGS) -shared -fPIC dso.c -o $@
-
-exe : exe.c dso.h oo.h dso.so
- gcc $(CFLAGS) -fPIE exe.c dso.so -o $@
-
-bench : exe
- LD_LIBRARY_PATH=. ./exe
-
-clean :
- rm -f dso.so exe
-
http://git-wip-us.apache.org/repos/asf/lucy/blob/9770cb3a/devel/benchmarks/method_dispatch/dso.c
----------------------------------------------------------------------
diff --git a/devel/benchmarks/method_dispatch/dso.c b/devel/benchmarks/method_dispatch/dso.c
deleted file mode 100644
index 2cb9f20..0000000
--- a/devel/benchmarks/method_dispatch/dso.c
+++ /dev/null
@@ -1,51 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "dso.h"
-
-static void Obj_hello(obj_t *obj);
-
-void thunk3(obj_t *obj);
-
-class_t *OBJ;
-size_t Obj_Hello_OFFSET;
-method_t Obj_Hello_THUNK_PTR;
-
-void
-bootstrap() {
- size_t method_idx = 3;
- size_t class_size = offsetof(class_t, vtable)
- + (method_idx + 1) * sizeof(method_t);
-
- OBJ = (class_t*)calloc(1, class_size);
-
- OBJ->name = "Obj";
- OBJ->class_size = class_size;
-
- Obj_Hello_OFFSET = offsetof(class_t, vtable)
- + method_idx * sizeof(method_t);
- OBJ->vtable[method_idx] = Obj_hello;
- Obj_Hello_THUNK_PTR = thunk3;
-}
-
-obj_t*
-Obj_new() {
- obj_t *self = (obj_t *)malloc(sizeof(obj_t));
-
- self->refcount = 1;
- self->klass = OBJ;
- self->value = 0;
-
- return self;
-}
-
-static void
-Obj_hello(obj_t *obj) {
- ++obj->value;
-}
-
-void
-thunk3(obj_t *obj) {
- obj->klass->vtable[3](obj);
-}
-
http://git-wip-us.apache.org/repos/asf/lucy/blob/9770cb3a/devel/benchmarks/method_dispatch/dso.h
----------------------------------------------------------------------
diff --git a/devel/benchmarks/method_dispatch/dso.h b/devel/benchmarks/method_dispatch/dso.h
deleted file mode 100644
index f69aaed..0000000
--- a/devel/benchmarks/method_dispatch/dso.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef DSO_H
-#define DSO_H
-
-#include "oo.h"
-
-extern class_t *OBJ;
-extern size_t Obj_Hello_OFFSET;
-extern method_t Obj_Hello_THUNK_PTR;
-#define Obj_Hello_FIXED_OFFSET (5 * sizeof(void*))
-
-void bootstrap();
-
-obj_t *Obj_new(void);
-
-void Obj_Hello_THUNK(obj_t *obj);
-
-#endif /* DSO_H */
-
http://git-wip-us.apache.org/repos/asf/lucy/blob/9770cb3a/devel/benchmarks/method_dispatch/exe.c
----------------------------------------------------------------------
diff --git a/devel/benchmarks/method_dispatch/exe.c b/devel/benchmarks/method_dispatch/exe.c
deleted file mode 100644
index 4e0b5d6..0000000
--- a/devel/benchmarks/method_dispatch/exe.c
+++ /dev/null
@@ -1,166 +0,0 @@
-#include <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/time.h>
-
-#include "dso.h"
-
-#define CPUFREQ UINT64_C(2800000000)
-#define NOINLINE __attribute__ ((noinline))
-uint64_t iterations;
-#define ITERATIONS iterations
-
-static inline method_t
-Obj_Hello_PTR(obj_t *obj) {
- class_t *klass = obj->klass;
- return *(method_t*)((char*)klass + Obj_Hello_OFFSET);
-}
-
-static inline void
-Obj_Hello(obj_t *obj) {
- class_t *klass = obj->klass;
- method_t method = *(method_t*)((char*)klass + Obj_Hello_OFFSET);
- method(obj);
-}
-
-static inline void
-Obj_Hello_FIXED(obj_t *obj) {
- class_t *klass = obj->klass;
- method_t method = *(method_t*)((char*)klass + Obj_Hello_FIXED_OFFSET);
- method(obj);
-}
-
-void
-loop_with_method_ptr(obj_t *obj) {
- method_t method = Obj_Hello_PTR(obj);
-
- for (uint64_t i = 0; i < ITERATIONS; ++i) {
- method(obj);
- }
-}
-
-void
-loop_with_wrapper(obj_t *obj) {
- for (uint64_t i = 0; i < ITERATIONS; ++i) {
- Obj_Hello(obj);
- }
-}
-
-void
-loop_with_fixed_offset_wrapper(obj_t *obj) {
- for (uint64_t i = 0; i < ITERATIONS; ++i) {
- Obj_Hello_FIXED(obj);
- }
-}
-
-#ifdef HAS_ALIAS
-void
-loop_with_thunk(obj_t *obj) {
- for (uint64_t i = 0; i < ITERATIONS; ++i) {
- Obj_Hello_THUNK(obj);
- }
-}
-
-void
-loop_with_thunk_ptr(obj_t *obj) {
- for (uint64_t i = 0; i < ITERATIONS; ++i) {
- Obj_Hello_THUNK_PTR(obj);
- }
-}
-#endif
-
-NOINLINE void
-single_call_with_wrapper(obj_t *obj) {
- Obj_Hello(obj);
-}
-
-void
-call_with_wrapper(obj_t *obj) {
- for (uint64_t i = 0; i < ITERATIONS; ++i) {
- single_call_with_wrapper(obj);
- }
-}
-
-#ifdef HAS_ALIAS
-NOINLINE void
-single_call_with_thunk(obj_t *obj) {
- Obj_Hello_THUNK(obj);
-}
-
-void
-call_with_thunk_ptr(obj_t *obj) {
- for (uint64_t i = 0; i < ITERATIONS; ++i) {
- single_call_with_thunk(obj);
- }
-}
-
-NOINLINE void
-single_call_with_thunk_ptr(obj_t *obj) {
- Obj_Hello_THUNK_PTR(obj);
-}
-
-void
-call_with_thunk(obj_t *obj) {
- for (uint64_t i = 0; i < ITERATIONS; ++i) {
- single_call_with_thunk(obj);
- }
-}
-#endif
-
-void
-loop_with_simulated_inline(obj_t *obj) {
- for (uint64_t i = 0; i < ITERATIONS; ++i) {
- obj->value++;
- }
-}
-
-static void
-bench(method_t fn, const char *name) {
- obj_t *obj = Obj_new();
-
- struct timeval t0;
- gettimeofday(&t0, NULL);
-
- fn(obj);
-
- struct timeval t1;
- gettimeofday(&t1, NULL);
-
- if (obj->value != ITERATIONS) {
- fprintf(stderr, "Unexpected obj->value: %" PRIu64 "\n", obj->value);
- abort();
- }
-
- uint64_t usec = (uint64_t)(t1.tv_sec - t0.tv_sec) * 1000000
- + (t1.tv_usec - t0.tv_usec);
- printf("cycles/call with %s: %f\n", name,
- ((double)usec * CPUFREQ) / (1000000.0 * ITERATIONS));
-}
-
-int
-main(int argc, char **argv) {
- if (argc > 1) {
- iterations = strtoll(argv[1], NULL, 10);
- }
- else {
- iterations = UINT64_C(1000000000);
- }
- bootstrap();
-
- bench(loop_with_method_ptr, "method ptr loop");
- bench(loop_with_wrapper, "wrapper loop");
- bench(loop_with_fixed_offset_wrapper, "fixed offset wrapper loop");
-#ifdef HAS_ALIAS
- bench(loop_with_thunk, "thunk loop");
- bench(loop_with_thunk_ptr, "thunk ptr loop");
-#endif
- bench(call_with_wrapper, "wrapper");
-#ifdef HAS_ALIAS
- bench(call_with_thunk, "thunk");
- bench(call_with_thunk_ptr, "thunk ptr");
-#endif
- bench(loop_with_simulated_inline, "simulated inline");
-
- return 0;
-}
-
http://git-wip-us.apache.org/repos/asf/lucy/blob/9770cb3a/devel/benchmarks/method_dispatch/oo.h
----------------------------------------------------------------------
diff --git a/devel/benchmarks/method_dispatch/oo.h b/devel/benchmarks/method_dispatch/oo.h
deleted file mode 100644
index a08e843..0000000
--- a/devel/benchmarks/method_dispatch/oo.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef OO_H
-#define OO_H
-
-#include <stddef.h>
-#include <stdint.h>
-
-typedef struct class_t class_t;
-
-typedef struct obj_t {
- size_t refcount;
- class_t *klass;
- uint64_t value;
-} obj_t;
-
-typedef void (*method_t)(obj_t *obj);
-
-struct class_t {
- char *name;
- size_t class_size;
- method_t vtable[1];
-};
-
-#endif /* OO_H */
-