aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJukka Jylänki <jujjyl@gmail.com>2013-05-09 16:43:06 +0300
committerChad Austin <chad@imvu.com>2013-05-17 12:58:08 -0700
commit4e616121d182fa478d845393e7363b3c0a5e3452 (patch)
tree0c80f3c368f9018a404012391c799e4e31b9add8
parent0ef792b006a82a0071fa70f83661dbf0ef04b18d (diff)
Add new benchmark for emscripten::val handling.
-rw-r--r--tests/embind/embind.benchmark.js11
-rw-r--r--tests/embind/embind_benchmark.cpp10
2 files changed, 21 insertions, 0 deletions
diff --git a/tests/embind/embind.benchmark.js b/tests/embind/embind.benchmark.js
index a21b8392..3669bc28 100644
--- a/tests/embind/embind.benchmark.js
+++ b/tests/embind/embind.benchmark.js
@@ -272,3 +272,14 @@ function _call_through_interface2() {
Module.print("C++ -> JS memory_view instantiation" + N + " iters: " + elapsed + " msecs.");
obj.delete();
}
+
+function _returns_val_benchmark() {
+ var N = 1000000;
+ var v = 1;
+ var start = _emscripten_get_now();
+ for(var i = 0; i < N; ++i) {
+ v = Module['returns_val'](v);
+ }
+ var elapsed = _emscripten_get_now() - start;
+ Module.print("returns_val " + N + " iters: " + elapsed + " msecs");
+}
diff --git a/tests/embind/embind_benchmark.cpp b/tests/embind/embind_benchmark.cpp
index d6aa950f..5ae9a6be 100644
--- a/tests/embind/embind_benchmark.cpp
+++ b/tests/embind/embind_benchmark.cpp
@@ -51,6 +51,13 @@ extern void pass_gameobject_ptr_benchmark_embind_js();
extern void call_through_interface0();
extern void call_through_interface1();
extern void call_through_interface2();
+
+extern void returns_val_benchmark();
+}
+
+emscripten::val returns_val(emscripten::val value)
+{
+ return emscripten::val(value.as<unsigned>() + 1);
}
class Vec3
@@ -281,6 +288,8 @@ EMSCRIPTEN_BINDINGS(benchmark)
function("callInterface1", &callInterface1);
function("callInterface2", &callInterface2);
function("callInterface3", &callInterface3);
+
+ function("returns_val", &returns_val);
}
void __attribute__((noinline)) emscripten_get_now_benchmark(int N)
@@ -492,4 +501,5 @@ int main()
call_through_interface0();
call_through_interface1();
call_through_interface2();
+ returns_val_benchmark();
}