NSSTC / sim-ecs

Batteries included TypeScript ECS
https://nsstc.github.io/sim-ecs/
Mozilla Public License 2.0
84 stars 12 forks source link

I really like this git repository ! Why is insertion very slow ? #50

Closed jinjun1994 closed 2 years ago

jinjun1994 commented 2 years ago

Platform: Windows_NT win32 x64 v10.0.18363 CPU: AMD Ryzen 7 3700X 8-Core Processor@3593MHz

Default Suite / Simple Insert

Ape-ECS 150 ops/s ± 1.1%
bitecs 4167 ops/s ± 1.8%
sim-ecs 221 ops/s ± 0.66%
tick-knock 543 ops/s ± 1.1%
minecrawler commented 2 years ago

Hey, thank you for the kind words!

tl;dr: Insertion is slow, because it wasn't my focus when I started building sim-ecs.

My focus was to get decent iteration speed with good developer experience (API- and tooling-wise) and a rich feature set. Over time, a lot changed, but many internal structures are a little old, now. I think one of the problems is, that sim-ecs tries to be too eager when prepping things, which leads to overhead on each item among other issues. Which is why I want to overhaul what's under the hood in #41 . I hope to get many benefits, and maybe some performance boosts as well (though I am a bit reluctant to promises anything).

Point is, I am working on a game which uses sim-ecs. I never had performance problems because of sim-ecs, so I won't put too much effort into measurements to fix a problem I don't have instead of doing the thing I actually want to do. I recommend giving sim-ecs a try and see if it fits your needs. Feel free to compare it with other solutions out there. Usually, the performance in benchmarks is nice to look at, but in a real application there are more important aspects than synthetic numbers :)

Also, if you have any questions, fixes, wishes or ideally PRs, just drop them here. I usually look through my notifications daily and try to get things implemented into sim-ecs as fast as possible (for a hobby project)