Skip to content

Conversation

@snikolayev
Copy link
Member

For simple rules (without complex joins and aggregations) this reduces the memory utilization down to a half of what it was.
This improvement does not affect aggregations.

Replace dictionary of dictionaries with a dictionary of composite keys, using a struct.
Eliminate a dictionary per tuple and use a single dictionary in the working memory with a composite key.
Store activation-related state needed for on-change agenda filters to the filters, to reduce the memory footprint associated with activations.
Generalize the concept of stateful agenda filters, such that custom filters can be added in the future.
Eliminate LINQ
Store keys in arrays; pre-allocate those arrays once, and use Array.Copy to snap new keys
To improve propagation performance and reduce memory footprint
Remove activation change keys from the KeyChange agenda filter when the activation is removed.
Cleanup naming.
Create AgendaContext once and reuse to eliminate allocations.
@snikolayev snikolayev added this to the 0.9.2 milestone Feb 5, 2021
@snikolayev snikolayev self-assigned this Feb 5, 2021
@snikolayev snikolayev merged commit 01d9226 into develop Feb 5, 2021
@snikolayev snikolayev deleted the features/memory-footprint branch February 6, 2021 19:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants