Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dynamic scheduling optimizations #167

Merged
merged 12 commits into from
Jan 31, 2023
Merged

Dynamic scheduling optimizations #167

merged 12 commits into from
Jan 31, 2023

Conversation

Anders429
Copy link
Owner

Closes #73.

This provides dynamic schedule optimizations at runtime. While schedule stages are already defined at compile time according to the views of each task in the schedule, this provides an extra optimization when running the schedule on a specific World, namely that it will check whether extra tasks from the next stage can be scheduled alongside the current tasks on that world specifically by keeping track of which component columns are borrowed from which archetypes.

When running on ecs_bench_suite, I saw a >20% time save on the scheduling test. This is because the optimization actually is applied to that test specifically, due to the last two systems not actually borrowing components from the same archetypes. This is a good performance increase.

With a bit of clean up, this is ready to be merged. Will need to fix some lints, add some tests, and update the changelog.

@Anders429 Anders429 linked an issue Jan 29, 2023 that may be closed by this pull request
@Anders429 Anders429 added C - Enhancement Category: New feature or request. C - Performance Category: Related to performance. P - Low Priority: Not particularly urgent. F - rayon Feature: Parallel processing through the rayon library. A - Scheduling Area: Parallel scheduling of systems. labels Jan 29, 2023
@codecov-commenter
Copy link

codecov-commenter commented Jan 29, 2023

Codecov Report

Merging #167 (1988e77) into dev (ccfd465) will decrease coverage by 0.57%.
The diff coverage is 74.84%.

📣 This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more

@@            Coverage Diff             @@
##              dev     #167      +/-   ##
==========================================
- Coverage   94.80%   94.23%   -0.57%     
==========================================
  Files          73       75       +2     
  Lines       10857    11158     +301     
==========================================
+ Hits        10293    10515     +222     
- Misses        564      643      +79     
Impacted Files Coverage Δ
src/archetype/identifier/mod.rs 95.09% <ø> (ø)
src/system/schedule/stager.rs 81.25% <ø> (ø)
src/system/schedule/task/sealed.rs 100.00% <ø> (ø)
src/system/schedule/stage.rs 52.84% <52.06%> (-47.16%) ⬇️
src/system/schedule/stages.rs 64.70% <58.62%> (-35.30%) ⬇️
src/registry/contains/views/sealed.rs 96.47% <66.66%> (-3.53%) ⬇️
src/registry/sealed/view.rs 92.74% <66.66%> (-1.57%) ⬇️
src/query/result/archetype_claims.rs 100.00% <100.00%> (ø)
src/query/view/claim.rs 100.00% <100.00%> (ø)
src/world/mod.rs 100.00% <100.00%> (ø)
... and 1 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

@Anders429 Anders429 marked this pull request as ready for review January 31, 2023 08:30
@Anders429 Anders429 merged commit 83d8627 into dev Jan 31, 2023
@Anders429 Anders429 deleted the schedule branch January 31, 2023 08:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A - Scheduling Area: Parallel scheduling of systems. C - Enhancement Category: New feature or request. C - Performance Category: Related to performance. F - rayon Feature: Parallel processing through the rayon library. P - Low Priority: Not particularly urgent.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Dynamic Schedule stages
2 participants