-
-
Notifications
You must be signed in to change notification settings - Fork 4k
Open
Labels
A-ECSEntities, components, systems, and eventsEntities, components, systems, and eventsC-PerformanceA change motivated by improving speed, memory usage or compile timesA change motivated by improving speed, memory usage or compile timesP-HighThis is particularly urgent, and deserves immediate attentionThis is particularly urgent, and deserves immediate attentionP-RegressionFunctionality that used to work but no longer does. Add a test for this!Functionality that used to work but no longer does. Add a test for this!S-Needs-BenchmarkingThis set of changes needs performance benchmarking to double-check that they helpThis set of changes needs performance benchmarking to double-check that they help
Milestone
Description
Problem
As spotted by @SanderMertens of flecs, Bevy's ECS perf had a serious regression from Bevy 0.15 to Bevy 0.16.
For many users, this may have been outweighed by the improvements to rendering performance and transform propagation; hence why this is just now being found and reported.
See this gist for the exact benches used.
Path to a solution
We should focus on the get / get_mut regressions first: those are larger so they'll be easier to spot. We may have multiple independent regressions, particularly since insertion / removal are also affected. The relations regressions are less surprising (we completely changed our strategy there), but should be rechecked once the other regressions are fixed.
- Bench for Bevy 0.15.
- Bench for Bevy 0.16
- Bench for Bevy main (we may have somehow fixed this)
- Bisect from Bevy 0.15 to Bevy 0.16 by git commits to figure out where this was introduced.
- Report back so we can coordinate a fix.
- Fix!
- Ideally, release a point release removing or at least ameliorating the regression.
mcobzarenco
Metadata
Metadata
Assignees
Labels
A-ECSEntities, components, systems, and eventsEntities, components, systems, and eventsC-PerformanceA change motivated by improving speed, memory usage or compile timesA change motivated by improving speed, memory usage or compile timesP-HighThis is particularly urgent, and deserves immediate attentionThis is particularly urgent, and deserves immediate attentionP-RegressionFunctionality that used to work but no longer does. Add a test for this!Functionality that used to work but no longer does. Add a test for this!S-Needs-BenchmarkingThis set of changes needs performance benchmarking to double-check that they helpThis set of changes needs performance benchmarking to double-check that they help