Skip to content

Commit 1ade629

Browse files
committed
Merge pull request #2 from makrjs/add/benchmarks
Update benchmarks - closes #1
2 parents 222757d + 0c38778 commit 1ade629

File tree

2 files changed

+97
-0
lines changed

2 files changed

+97
-0
lines changed

benchmark/entities.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
var makr = require('../lib/index')
2+
3+
function Component() {}
4+
5+
var em = makr(Component)
6+
var entity = em.create()
7+
var component = new Component()
8+
9+
suite('Entity', function() {
10+
bench('#add', function() {
11+
entity.add(component)
12+
})
13+
14+
bench('#get', function() {
15+
entity.get(Component)
16+
})
17+
18+
bench('#has', function() {
19+
entity.has(Component)
20+
})
21+
22+
bench('#remove', function() {
23+
entity.remove(Component)
24+
})
25+
26+
bench('#destroy', function() {
27+
entity.destroy()
28+
})
29+
})

benchmark/entity_manager.js

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
var makr = require('../lib/index')
2+
var em
3+
4+
function A() {}
5+
function B() {}
6+
function C() {}
7+
function D() {}
8+
function E() {}
9+
function F() {}
10+
function G() {}
11+
function H() {}
12+
function I() {}
13+
function J() {}
14+
15+
suite('EntityManager', function() {
16+
before(function() {
17+
em = makr(A, B, C, D, E, F, G, H, I, J)
18+
19+
for (var i = 0; i < 1000; i++) {
20+
var e = em.create()
21+
22+
i % 2 === 0 && e.add(new A())
23+
i % 3 === 0 && e.add(new B())
24+
i % 4 === 0 && e.add(new C())
25+
i % 5 === 0 && e.add(new D())
26+
i % 6 === 0 && e.add(new E())
27+
i % 7 === 0 && e.add(new F())
28+
i % 8 === 0 && e.add(new G())
29+
i % 9 === 0 && e.add(new H())
30+
i % 2 === 0 && e.add(new I())
31+
i % 3 === 0 && e.add(new J())
32+
}
33+
})
34+
35+
bench('query on 1000 entities with 1 component (500 matches)', function() {
36+
keep = em.query(A)
37+
})
38+
39+
bench('query on 1000 entities with 3 components (84 matches)', function() {
40+
keep = em.query(A, B, C)
41+
})
42+
43+
bench('query on 1000 entities with 10 components (1 match)', function() {
44+
keep = em.query(A, B, C, D, E, F, G, H, I, J)
45+
})
46+
})
47+
48+
suite('EntityManager', function() {
49+
before(function() {
50+
em = makr(A, B, C, D, E, F, G, H, I, J)
51+
})
52+
53+
bench('#create', function() {
54+
em.create()
55+
})
56+
57+
bench('#get', function() {
58+
em.get(randomID())
59+
})
60+
61+
bench('#valid', function() {
62+
em.valid(randomID())
63+
})
64+
})
65+
66+
function randomID() {
67+
return (Math.random() * 1000) | 0
68+
}

0 commit comments

Comments
 (0)