You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 27, 2022. It is now read-only.
(*): The values in parentheses are results where per-benchmark storage optimizations were applied. Some of these are mutually exclusive, so with and without "packing" typically represent best and worst-case performance for the ECS.
19
-
20
-
The best result for each benchmark is marked in bold text. Note that run to run variance for these benchmarks is typically 2-3%, with outliers as much as 10%. All micro-benchmarks should be taken with a grain of salt, and any benchmarks within a few percent of each other should be considered "effectively equal".
21
-
22
7
## The Benchmarks
23
8
24
9
### Simple Insert
@@ -27,6 +12,8 @@ This benchmark is designed to test the base cost of constructing entities and mo
27
12
28
13
Inserts 10,000 entities, each with 4 components: `Transform(mat4x4)`, `Position(vec3)`, `Rotation(vec3)` and `Velocity(vec3)`.
This benchmark is designed to test the core overheads involved in component iteration in best-case conditions. The iteration should occur on a single CPU core.
@@ -35,6 +22,8 @@ Dataset: 10,000 entities, each with 4 components: `Transform(mat4x4)`, `Position
35
22
36
23
Test: Iterate through all entities with `Position` and `Velocity`, and add velocity onto position.
This benchmark is designed to test how efficiently the ECS can schedule multiple independent systems on a multi-core CPU. This is primarily an outer-parallelism test. Each system should execute on a single CPU core.
@@ -62,6 +53,8 @@ Three systems accessing the following components mutably, where each system swap
This benchmark is designed to test the ECS's ability to scale when it is allowed to run a system over multiple CPU cores. This is primarily an inner-parallelism test.
@@ -70,6 +63,8 @@ Dataset: 10,000 entities with a `mat4x4` component.
70
63
71
64
Test: Iterate through all `mat4x4` components, and invert the matrix 10 times.
This benchmark is designed to test how quickly the ECS and serialize and deserialize its entities in both text (RON) and binary (bincode) formats.
84
81
85
82
Dataset: 1000 entities with `Transform(mat4x4)`, `Position(vec3)`, `Rotation(vec3)` and `Velocity(vec3)` components.
86
83
87
84
Test: Serialize all entities to RON and bincode formats in-memory. Then deserialize back into the ECS. The RON and bincode formats should be separate benchmark tests.
0 commit comments