Benchmark Results
Alan-FGR opened this issue ยท 17 comments
Convenience issue for testers to send their benchmark results.
Just drag and drop the txt or other output files in a new reply.
Inform the CPU where you ran the benchmarks in your reply. Simple id (like i7 6700k) is more than enough.
Prebuilt binaries can be downloaded here:
https://github.com/Alan-FGR/minECS/tree/entt_bench/Benchmarker/prebuilt
It's just a compiled distribution version of that branch.
native
contains native binaries and thus don't require any runtime. Run the Benchmarker.exe.
bench
contains managed binaries and require dotnet
to run. There's a _run.bat
for convenience.
Both versions require Win7+ 64 bit. Please inform which version you've used.
Thank you!
NOTE: in the detailed results, if you're using the managed version the first loop takes much longer because of jitting. It could be pre-jitted but I'm discarding those values that are too off so it doesn't affect the results_ALL
(ran the native one)
Results from old Conroe 2.66GHz (native): Benchs.zip
Hi @Alan-FGR
Since you opened this, I reviewed persistent views and got an improvement around 100x on some preliminary tests.
Would you run once more benchmarks against master
of EnTT
?
Knowing where I've still to improve things could help a lot actually. Thanks.
If you want, I can update your main.cpp
file to be sure it's using properly new persistent views. Let me know.
@skypjack you want my help to prove that latest EnTT completely blows my ECS outta water?
I'll just have to check in the old commits what settings I've used for the benchmark. Once I'm done I'll ping you so you can see if the EnTT usage is sound.
Ahahahah no, indeed. This wasn't the goal, but it's an appreciated side effect now that you pointed it out.
To be honest, your benchmarks and some of the questions on gitter were the key to motivate me to make a review of the persistent views. I had an idea for a while but I was too lazy to implement it, because I didn't have a need for more performance actually.
I'm just curious to know if I get more or less the same results or, at least, how far EnTT
is from the performance of different approaches. Probably there is room for further optimizations, but I'm again too lazy for them now! ๐
I've added some more exhaustive benchmarks and minECS performs surprisingly well even compared to the new persistent views in EnTT... as we discussed though these stress tests might not reflect real-world scenarios very well but they're still relatively useful to at very least know what kind of performance you should except in my opinion.
Here are native binaries: benchmarks.zip
Persistent views are gone. If you want to test it against groups, there is a new lower bound to reach. ๐
@skypjack great to see EnTT gets such substantial improvements so quickly... it's really moving forward by leaps and bounds! I'll make sure to update my benchmarks when I have some time. Thanks for letting me know :)
there is a benchmark for ECS frameworks
https://github.com/Doraku/Ecs.CSharp.Benchmark
a cool C# likely native-language Beef
https://github.com/beefytech/Beef
maybe make a port for Beef?