Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit fe8c582

Browse filesBrowse files
committed
Add new passgameobject_ptr embind benchmark to test smartptr routing in and out of functions.
1 parent 6f8af49 commit fe8c582
Copy full SHA for fe8c582

2 files changed

+52Lines changed: 52 additions & 0 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎tests/embind/embind.benchmark.js‎

Copy file name to clipboardExpand all lines: tests/embind/embind.benchmark.js
+23Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,30 @@ function _move_gameobjects_benchmark_embind_js() {
195195
var t = objects[i]['GetTransform']();
196196
accum = Module['add'](Module['add'](accum, t['GetPosition']()), t['GetRotation']());
197197
t['delete']();
198+
objects[i]['delete']();
198199
}
199200

200201
Module.print("JS embind move_gameobjects " + N + " iters: " + (b-a) + " msecs. Result: " + (accum[0] + accum[1] + accum[2]));
201202
}
203+
204+
function _pass_gameobject_ptr_benchmark_embind_js() {
205+
var N = 100000;
206+
var objects = [];
207+
for(i = 0; i < N; ++i) {
208+
objects.push(Module['create_game_object']());
209+
}
210+
211+
var a = _emscripten_get_now();
212+
for(i = 0; i < N; ++i) {
213+
var t = Module['pass_gameobject_ptr'](objects[i]);
214+
t['delete']();
215+
}
216+
var b = _emscripten_get_now();
217+
218+
for(i = 0; i < N; ++i) {
219+
objects[i]['delete']();
220+
}
221+
222+
Module.print("JS embind pass_gameobject_ptr " + N + " iters: " + (b-a) + " msecs.");
223+
}
224+
Collapse file

‎tests/embind/embind_benchmark.cpp‎

Copy file name to clipboardExpand all lines: tests/embind/embind_benchmark.cpp
+29Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ extern void sum_float_benchmark_embind_js();
4545

4646
extern void increment_class_counter_benchmark_embind_js(int N);
4747
extern void move_gameobjects_benchmark_embind_js();
48+
49+
extern void pass_gameobject_ptr_benchmark();
50+
extern void pass_gameobject_ptr_benchmark_embind_js();
4851
}
4952

5053
class Vec3
@@ -94,6 +97,11 @@ GameObjectPtr create_game_object()
9497
return std::make_shared<GameObject>();
9598
}
9699

100+
GameObjectPtr __attribute__((noinline)) pass_gameobject_ptr(GameObjectPtr p)
101+
{
102+
return p;
103+
}
104+
97105
class Foo
98106
{
99107
public:
@@ -143,6 +151,7 @@ EMSCRIPTEN_BINDINGS(benchmark)
143151
.element(&Vec3::z);
144152

145153
function("create_game_object", &create_game_object);
154+
function("pass_gameobject_ptr", &pass_gameobject_ptr);
146155
function("add", &add);
147156

148157
function("get_counter", &get_counter);
@@ -306,6 +315,23 @@ void __attribute__((noinline)) move_gameobjects_benchmark()
306315
printf("C++ move_gameobjects %d iters: %f msecs. Result: %f\n", N, (t2-t), accum.x+accum.y+accum.z);
307316
}
308317

318+
void __attribute__((noinline)) pass_gameobject_ptr_benchmark()
319+
{
320+
const int N = 100000;
321+
GameObjectPtr objects[N];
322+
for(int i = 0; i < N; ++i)
323+
objects[i] = create_game_object();
324+
325+
volatile float t = emscripten_get_now();
326+
for(int i = 0; i < N; ++i)
327+
{
328+
objects[i] = pass_gameobject_ptr(objects[i]);
329+
}
330+
volatile float t2 = emscripten_get_now();
331+
332+
printf("C++ pass_gameobject_ptr %d iters: %f msecs.\n", N, (t2-t));
333+
}
334+
309335
int main()
310336
{
311337
for(int i = 1000; i <= 100000; i *= 10)
@@ -341,4 +367,7 @@ int main()
341367
printf("\n");
342368
move_gameobjects_benchmark();
343369
move_gameobjects_benchmark_embind_js();
370+
printf("\n");
371+
pass_gameobject_ptr_benchmark();
372+
pass_gameobject_ptr_benchmark_embind_js();
344373
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.