Alan-FGR/minECS

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

@Wraith2 thank you ๐Ÿ˜„

i7_5820k.zip

(ran the native one)

@jdswebb thank you ๐Ÿ˜ƒ

Results from old Conroe 2.66GHz (native): Benchs.zip

Results from Haswell 3.0GHz (native): res.zip

thank you @jdswebb ๐Ÿ˜ƒ
interesting... EnTT beats minECS in some tests there...

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? :trollface:
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. :trollface:
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 :)

sgf commented

there is a benchmark for ECS frameworks
https://github.com/Doraku/Ecs.CSharp.Benchmark

sgf commented

a cool C# likely native-language Beef
https://github.com/beefytech/Beef
maybe make a port for Beef?