perf: optimize light calculations (4400x less allocs)#1192
Open
HashimTheArab wants to merge 3 commits intodf-mc:masterfrom
Open
perf: optimize light calculations (4400x less allocs)#1192HashimTheArab wants to merge 3 commits intodf-mc:masterfrom
HashimTheArab wants to merge 3 commits intodf-mc:masterfrom
Conversation
- Replaced linked-list BFS queue with a ring-buffer queue for light propagation (Fill/Spread) to remove per-node heap churn. - Removed iterator-based neighbor traversal in propagation; now uses direct 6-neighbor checks. - Removed small slice allocations in world light orchestration (chunk() and spreadLight()).
Sandertv
reviewed
Feb 25, 2026
Member
Sandertv
left a comment
There was a problem hiding this comment.
Good changes, a ring buffer will definitely help bring down allocations. Got a couple of minor comments
| func (a *lightArea) Fill() { | ||
| a.initialiseLightSlices() | ||
| queue := list.New() | ||
| queue := newLightQueue(512) |
Member
There was a problem hiding this comment.
Are these pre-allocated sizes based on anything? Could we do some tests with a real world to see what a suitable cap might be if that wasn't done yet?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Benchmark results
Benchmark Code