diff options
-rw-r--r-- | tests/embind/embind.benchmark.js | 11 | ||||
-rw-r--r-- | tests/embind/embind_benchmark.cpp | 10 |
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(); } |