diff options
author | Jukka Jylänki <jujjyl@gmail.com> | 2013-04-11 16:24:21 +0300 |
---|---|---|
committer | Jukka Jylänki <jujjyl@gmail.com> | 2013-04-18 20:08:24 +0300 |
commit | c7cfcda3ad9a8a21438b32ca9fe79baeb4bdfeda (patch) | |
tree | 4ad339bf078062f920b62f4d4aa4feeab2a3d3ec /tests/embind/embind.benchmark.js | |
parent | 3d451192df36f938ae563214ebf3cd9b71713f54 (diff) |
Add a more concrete realworld benchmark with GameObject/Transform/Vector3 position/rotation object hierarchy with shared_ptrs and benchmark moving objects from JS side using embind.
Diffstat (limited to 'tests/embind/embind.benchmark.js')
-rw-r--r-- | tests/embind/embind.benchmark.js | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/embind/embind.benchmark.js b/tests/embind/embind.benchmark.js index de1cdd2c..959358b6 100644 --- a/tests/embind/embind.benchmark.js +++ b/tests/embind/embind.benchmark.js @@ -171,3 +171,31 @@ function _sum_float_benchmark_embind_js() { var b = _emscripten_get_now(); Module.print("JS embind sum_float 100000 iters: " + (b-a)*1000 + " msecs. result: " + r); } + +function _move_gameobjects_benchmark_embind_js() { + var N = 100000; + var objects = []; + for(i = 0; i < N; ++i) { + objects.push(Module['create_game_object']()); + } + + var a = _emscripten_get_now(); + for(i = 0; i < N; ++i) { + var t = objects[i].GetTransform(); + var pos = Module.add(t.GetPosition(), [2, 0, 1]); + var rot = Module.add(t.GetRotation(), [0.1, 0.2, 0.3]); + t.SetPosition(pos); + t.SetRotation(rot); + t.delete(); + } + var b = _emscripten_get_now(); + + var accum = [0,0,0]; + for(i = 0; i < N; ++i) { + var t = objects[i].GetTransform(); + accum = Module.add(Module.add(accum, t.GetPosition()), t.GetRotation()); + t.delete(); + } + + Module.print("JS embind move_gameobjects " + N + " iters: " + 1000*(b-a) + " msecs. Result: " + (accum[0] + accum[1] + accum[2])); +} |