11
#include "benchmark_object.eo.h"
13
void _benchmark_object_emptyarg(Eo*, void*)
16
void _benchmark_object_onearg(Eo*, void*, int)
19
void _benchmark_object_twoarg(Eo*, void*, int, int)
22
void _benchmark_object_tenarg(Eo*, void*, int, int, int, int, int, int, int, int, int, int)
25
void _benchmark_object_onecomplexarg(Eo*, void*, Eina_List*)
28
void _benchmark_object_tencomplexarg(Eo*, void*, Eina_List*, Eina_List*, Eina_List*, Eina_List*, Eina_List*, Eina_List*, Eina_List*, Eina_List*, Eina_List*, Eina_List*)
32
#include "benchmark_object.eo.c"
35
#include "benchmark_object.eo.js.cc"
39
using efl::eina::js::compatibility_return_type;
40
using efl::eina::js::compatibility_callback_info_type;
41
using efl::eina::js::compatibility_return;
42
using efl::eina::js::compatibility_new;
44
#define JS_BENCHMARK_ARGS0(v)
45
#define JS_BENCHMARK_ARGS1(v) ,v
46
#define JS_BENCHMARK_ARGS2(v) ,v,v
47
#define JS_BENCHMARK_ARGS10(v) ,v,v,v,v,v,v,v,v,v,v
48
#define JS_BENCHMARK_FUNC(name, number, v) \
49
compatibility_return_type js_benchmark_object_##name##arg(compatibility_callback_info_type) \
51
Eina_Counter* counter = eina_counter_new("counter"); \
52
Eo* object = efl_add(BENCHMARK_OBJECT_CLASS, NULL); \
53
Eina_List* l = NULL; \
56
for(int i = 0; i != 10; i++) \
58
benchmark_object_##name##arg(object JS_BENCHMARK_ARGS##number(v)); \
61
eina_counter_start(counter); \
62
for(int i = 0; i != 20000; i++) \
64
benchmark_object_##name##arg(object JS_BENCHMARK_ARGS##number(v)); \
66
eina_counter_stop(counter, 20000); \
67
fprintf(stderr, "%s", eina_counter_dump(counter)); \
69
return compatibility_return(); \
72
JS_BENCHMARK_FUNC(empty, 0, 1)
73
JS_BENCHMARK_FUNC(one, 1, 1)
74
JS_BENCHMARK_FUNC(two, 2, 1)
75
JS_BENCHMARK_FUNC(ten, 10, 1)
76
JS_BENCHMARK_FUNC(onecomplex, 1, l)
77
JS_BENCHMARK_FUNC(tencomplex, 10, l)
80
void benchmark_object_module_init(v8::Handle<v8::Object> exports)
82
fprintf(stderr, "test suite eolian_js_module_init\n"); fflush(stderr);
87
register_benchmark_object(exports, v8::Isolate::GetCurrent());
88
#define JS_BENCHMARK_EXPORT(name) \
89
exports->Set(compatibility_new<v8::String>(nullptr, "benchmark_" #name "arg") \
90
, compatibility_new<v8::FunctionTemplate>(nullptr, &js_benchmark_object_##name##arg)->GetFunction());
91
JS_BENCHMARK_EXPORT(empty)
92
JS_BENCHMARK_EXPORT(one)
93
JS_BENCHMARK_EXPORT(two)
94
JS_BENCHMARK_EXPORT(ten)
95
JS_BENCHMARK_EXPORT(onecomplex)
96
JS_BENCHMARK_EXPORT(tencomplex)
100
std::cerr << "Error" << std::endl;
107
#include <eina_js_node.hh>
109
NODE_MODULE(benchmark_object, ::benchmark_object_module_init)