Benchmarks of various Rust Entity Component Systems

December 11, 2017 · View on GitHub

Benchmarks

Benchmarks are run on Travis CI.

Benchmarks are located in benches/[bench_name]_[ecs_crate_name].rs.

Librarypos_vel buildpos_vel updateparallel buildparallel update
calx-ecs228 µs/iter (+/- 7)18 µs/iter (+/- 0)385 µs/iter (+/- 18)76 µs/iter (+/- 1)
constellation280 µs/iter (+/- 8)8 µs/iter (+/- 0)455 µs/iter (+/- 6)152 µs/iter (+/- 13)
ecs1,452 µs/iter (+/- 39)324 µs/iter (+/- 29)1,380 µs/iter (+/- 29)3,644 µs/iter (+/- 74)
froggy589 µs/iter (+/- 10)8 µs/iter (+/- 0)1,429 µs/iter (+/- 65)73 µs/iter (+/- 2)
specs261 µs/iter (+/- 7)3 µs/iter (+/- 0)675 µs/iter (+/- 88)87 µs/iter (+/- 1)
trex1,094 µs/iter (+/- 81)179 µs/iter (+/- 2)1,637 µs/iter (+/- 172)379 µs/iter (+/- 11)

Visualization of benchmarks, smaller is better. update benchmarks graph build benchmarks graph

pos_vel

  • 1000 entities with position and velocity components
  • 9000 entities with position components only
  • stub render system
  • physics system: position += velocity

parallel

  • 10000 entities with 3 simple components R, W1 and W2
  • w1 system reads R and writes to W1
  • w2 system reads R and writes to W2
  • systems could be run in parallel

Notes

  • the benchmarks explore a limited subset of ECS use-cases and do not necessarily reflect the peformance of large-scale applications
  • froggy is technically not an ECS, but a Component Graph System (CGS)