Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
emscripten-core
GitHub Repository: emscripten-core/emscripten
Path: blob/main/test/embind/embind.benchmark.js
4150 views
1
addToLibrary({
2
increment_counter_benchmark_js: function(N) {
3
var ctr = _get_counter();
4
var a = _emscripten_get_now();
5
for(i = 0; i < N; ++i) {
6
_increment_counter();
7
_increment_counter();
8
_increment_counter();
9
_increment_counter();
10
_increment_counter();
11
_increment_counter();
12
_increment_counter();
13
_increment_counter();
14
_increment_counter();
15
_increment_counter();
16
}
17
var b = _emscripten_get_now();
18
var ctr2 = _get_counter();
19
out("JS increment_counter " + N + " iters: " + (b-a) + " msecs. result: " + (ctr2-ctr));
20
},
21
22
increment_class_counter_benchmark_embind_js: function(N) {
23
var foo = new Module['Foo']();
24
var a = _emscripten_get_now();
25
for(i = 0; i < N; ++i) {
26
foo['incr_class_counter']();
27
foo['incr_class_counter']();
28
foo['incr_class_counter']();
29
foo['incr_class_counter']();
30
foo['incr_class_counter']();
31
foo['incr_class_counter']();
32
foo['incr_class_counter']();
33
foo['incr_class_counter']();
34
foo['incr_class_counter']();
35
foo['incr_class_counter']();
36
}
37
var b = _emscripten_get_now();
38
out("JS embind increment_class_counter " + N + " iters: " + (b-a) + " msecs. result: " + foo['class_counter_val']());
39
foo['delete']();
40
},
41
42
returns_input_benchmark_js: function() {
43
var a = _emscripten_get_now();
44
var t = 0;
45
for(i = 0; i < 100000; ++i) {
46
t += _returns_input(i);
47
t += _returns_input(i);
48
t += _returns_input(i);
49
t += _returns_input(i);
50
t += _returns_input(i);
51
t += _returns_input(i);
52
t += _returns_input(i);
53
t += _returns_input(i);
54
t += _returns_input(i);
55
t += _returns_input(i);
56
}
57
var b = _emscripten_get_now();
58
out("JS returns_input 100000 iters: " + (b-a) + " msecs. result: " + t);
59
},
60
61
sum_int_benchmark_js: function() {
62
var a = _emscripten_get_now();
63
var r = 0;
64
for(i = 0; i < 100000; ++i) {
65
r += _sum_int(i, 2, 3, 4, 5, 6, 7, 8, 9);
66
r += _sum_int(i, 2, 3, 4, 5, 6, 7, 8, 9);
67
r += _sum_int(i, 2, 3, 4, 5, 6, 7, 8, 9);
68
r += _sum_int(i, 2, 3, 4, 5, 6, 7, 8, 9);
69
r += _sum_int(i, 2, 3, 4, 5, 6, 7, 8, 9);
70
r += _sum_int(i, 2, 3, 4, 5, 6, 7, 8, 9);
71
r += _sum_int(i, 2, 3, 4, 5, 6, 7, 8, 9);
72
r += _sum_int(i, 2, 3, 4, 5, 6, 7, 8, 9);
73
r += _sum_int(i, 2, 3, 4, 5, 6, 7, 8, 9);
74
r += _sum_int(i, 2, 3, 4, 5, 6, 7, 8, 9);
75
}
76
var b = _emscripten_get_now();
77
out("JS sum_int 100000 iters: " + (b-a) + " msecs. result: " + r);
78
},
79
80
sum_float_benchmark_js: function() {
81
var a = _emscripten_get_now();
82
var r = 0;
83
for(i = 0; i < 100000; ++i) {
84
r += _sum_float(i, 2, 3, 4, 5, 6, 7, 8, 9);
85
r += _sum_float(i, 2, 3, 4, 5, 6, 7, 8, 9);
86
r += _sum_float(i, 2, 3, 4, 5, 6, 7, 8, 9);
87
r += _sum_float(i, 2, 3, 4, 5, 6, 7, 8, 9);
88
r += _sum_float(i, 2, 3, 4, 5, 6, 7, 8, 9);
89
r += _sum_float(i, 2, 3, 4, 5, 6, 7, 8, 9);
90
r += _sum_float(i, 2, 3, 4, 5, 6, 7, 8, 9);
91
r += _sum_float(i, 2, 3, 4, 5, 6, 7, 8, 9);
92
r += _sum_float(i, 2, 3, 4, 5, 6, 7, 8, 9);
93
r += _sum_float(i, 2, 3, 4, 5, 6, 7, 8, 9);
94
}
95
var b = _emscripten_get_now();
96
out("JS sum_float 100000 iters: " + (b-a) + " msecs. result: " + r);
97
},
98
99
increment_counter_benchmark_embind_js: function (N) {
100
var ctr = _get_counter();
101
var a = _emscripten_get_now();
102
for(i = 0; i < N; ++i) {
103
Module['increment_counter']();
104
Module['increment_counter']();
105
Module['increment_counter']();
106
Module['increment_counter']();
107
Module['increment_counter']();
108
Module['increment_counter']();
109
Module['increment_counter']();
110
Module['increment_counter']();
111
Module['increment_counter']();
112
Module['increment_counter']();
113
}
114
var b = _emscripten_get_now();
115
var ctr2 = _get_counter();
116
out("JS embind increment_counter " + N + " iters: " + (b-a) + " msecs. result: " + (ctr2-ctr));
117
},
118
119
returns_input_benchmark_embind_js: function() {
120
var a = _emscripten_get_now();
121
var t = 0;
122
for(i = 0; i < 100000; ++i) {
123
t += Module['returns_input'](i);
124
t += Module['returns_input'](i);
125
t += Module['returns_input'](i);
126
t += Module['returns_input'](i);
127
t += Module['returns_input'](i);
128
t += Module['returns_input'](i);
129
t += Module['returns_input'](i);
130
t += Module['returns_input'](i);
131
t += Module['returns_input'](i);
132
t += Module['returns_input'](i);
133
}
134
var b = _emscripten_get_now();
135
out("JS embind returns_input 100000 iters: " + (b-a) + " msecs. result: " + t);
136
},
137
138
sum_int_benchmark_embind_js: function() {
139
var a = _emscripten_get_now();
140
var r = 0;
141
for(i = 0; i < 100000; ++i) {
142
r += Module['sum_int'](i, 2, 3, 4, 5, 6, 7, 8, 9);
143
r += Module['sum_int'](i, 2, 3, 4, 5, 6, 7, 8, 9);
144
r += Module['sum_int'](i, 2, 3, 4, 5, 6, 7, 8, 9);
145
r += Module['sum_int'](i, 2, 3, 4, 5, 6, 7, 8, 9);
146
r += Module['sum_int'](i, 2, 3, 4, 5, 6, 7, 8, 9);
147
r += Module['sum_int'](i, 2, 3, 4, 5, 6, 7, 8, 9);
148
r += Module['sum_int'](i, 2, 3, 4, 5, 6, 7, 8, 9);
149
r += Module['sum_int'](i, 2, 3, 4, 5, 6, 7, 8, 9);
150
r += Module['sum_int'](i, 2, 3, 4, 5, 6, 7, 8, 9);
151
r += Module['sum_int'](i, 2, 3, 4, 5, 6, 7, 8, 9);
152
}
153
var b = _emscripten_get_now();
154
out("JS embind sum_int 100000 iters: " + (b-a) + " msecs. result: " + r);
155
},
156
157
sum_float_benchmark_embind_js: function() {
158
var a = _emscripten_get_now();
159
var r = 0;
160
for(i = 0; i < 100000; ++i) {
161
r += Module['sum_float'](i, 2, 3, 4, 5, 6, 7, 8, 9);
162
r += Module['sum_float'](i, 2, 3, 4, 5, 6, 7, 8, 9);
163
r += Module['sum_float'](i, 2, 3, 4, 5, 6, 7, 8, 9);
164
r += Module['sum_float'](i, 2, 3, 4, 5, 6, 7, 8, 9);
165
r += Module['sum_float'](i, 2, 3, 4, 5, 6, 7, 8, 9);
166
r += Module['sum_float'](i, 2, 3, 4, 5, 6, 7, 8, 9);
167
r += Module['sum_float'](i, 2, 3, 4, 5, 6, 7, 8, 9);
168
r += Module['sum_float'](i, 2, 3, 4, 5, 6, 7, 8, 9);
169
r += Module['sum_float'](i, 2, 3, 4, 5, 6, 7, 8, 9);
170
r += Module['sum_float'](i, 2, 3, 4, 5, 6, 7, 8, 9);
171
}
172
var b = _emscripten_get_now();
173
out("JS embind sum_float 100000 iters: " + (b-a) + " msecs. result: " + r);
174
},
175
176
move_gameobjects_benchmark_embind_js: function() {
177
var N = 10000;
178
var objects = [];
179
for(i = 0; i < N; ++i) {
180
objects.push(Module['create_game_object']());
181
}
182
183
var a = _emscripten_get_now();
184
for(i = 0; i < N; ++i) {
185
var t = objects[i]['GetTransform']();
186
var pos = Module['add'](t['GetPosition'](), [2, 0, 1]);
187
var rot = Module['add'](t['GetRotation'](), [0.1, 0.2, 0.3]);
188
t['SetPosition'](pos);
189
t['SetRotation'](rot);
190
t['delete']();
191
}
192
var b = _emscripten_get_now();
193
194
var accum = [0,0,0];
195
for(i = 0; i < N; ++i) {
196
var t = objects[i]['GetTransform']();
197
accum = Module['add'](Module['add'](accum, t['GetPosition']()), t['GetRotation']());
198
t['delete']();
199
objects[i]['delete']();
200
}
201
202
out("JS embind move_gameobjects " + N + " iters: " + (b-a) + " msecs. Result: " + (accum[0] + accum[1] + accum[2]));
203
},
204
205
pass_gameobject_ptr_benchmark_embind_js: function() {
206
var N = 100000;
207
var objects = [];
208
for(i = 0; i < N; ++i) {
209
objects.push(Module['create_game_object']());
210
}
211
212
var a = _emscripten_get_now();
213
for(i = 0; i < N; ++i) {
214
var t = Module['pass_gameobject_ptr'](objects[i]);
215
t['delete']();
216
}
217
var b = _emscripten_get_now();
218
219
for(i = 0; i < N; ++i) {
220
objects[i]['delete']();
221
}
222
223
out("JS embind pass_gameobject_ptr " + N + " iters: " + (b-a) + " msecs.");
224
},
225
226
call_through_interface0: function() {
227
var N = 1000000;
228
var obj = Module['Interface'].implement({
229
call0: function() {
230
}
231
});
232
var start = _emscripten_get_now();
233
Module['callInterface0'](N, obj);
234
var elapsed = _emscripten_get_now() - start;
235
out("C++ -> JS void through interface " + N + " iters: " + elapsed + " msecs.");
236
obj.delete();
237
},
238
239
call_through_interface1: function () {
240
var N = 1000000;
241
var obj = Module['Interface'].implement({
242
call1: function(s1, s2) {
243
return s1 + s2;
244
}
245
});
246
var start = _emscripten_get_now();
247
Module['callInterface1'](N, obj);
248
var elapsed = _emscripten_get_now() - start;
249
out("C++ -> JS std::wstring through interface " + N + " iters: " + elapsed + " msecs.");
250
obj.delete();
251
},
252
253
call_through_interface2: function() {
254
var N = 1000000;
255
var total = 0;
256
var obj = Module['Interface'].implement({
257
call_with_typed_array: function(ta) {
258
total += ta.length;
259
},
260
call_with_memory_view: function(ta) {
261
total += ta.length;
262
},
263
});
264
265
var start = _emscripten_get_now();
266
Module['callInterface2'](N, obj);
267
var elapsed = _emscripten_get_now() - start;
268
out("C++ -> JS typed array instantiation " + N + " iters: " + elapsed + " msecs.");
269
270
var start = _emscripten_get_now();
271
Module['callInterface3'](N, obj);
272
var elapsed = _emscripten_get_now() - start;
273
out("C++ -> JS memory_view instantiation" + N + " iters: " + elapsed + " msecs.");
274
obj.delete();
275
},
276
277
returns_val_benchmark: function() {
278
var N = 1000000;
279
var v = 1;
280
var start = _emscripten_get_now();
281
for(var i = 0; i < N; ++i) {
282
v = Module['returns_val'](v);
283
}
284
var elapsed = _emscripten_get_now() - start;
285
out("returns_val " + N + " iters: " + elapsed + " msecs");
286
},
287
288
});
289
290