Skip to content

Lazy Field Expansion#26

Merged
Intuity merged 7 commits intomainfrom
instances
Feb 21, 2025
Merged

Lazy Field Expansion#26
Intuity merged 7 commits intomainfrom
instances

Conversation

@Intuity
Copy link
Copy Markdown
Owner

@Intuity Intuity commented Feb 21, 2025

With this change structs and unions are now lazily expanded as fields are accessed - this leads to a considerable speedup when using deeply nested data structures.

Previously, all fields at all levels within a data structure would be expanded when an instance was created or unpacked from a value - however in many use cases only a small fraction of the fields would be accessed. As Packtype objects operate over a shared "bit vector" (with sub-objects referring to windows into this shared bit vector), it is not necessary to expand all fields in order to preserve the state. As such, fields may be lazily expanded as and when they are required by a testbench or other consumer.

In some internal testing, this has reduced Packtype's execution time under profiling from ~60% down to less than 10%.

@Intuity Intuity merged commit 0264175 into main Feb 21, 2025
2 checks passed
@Intuity Intuity deleted the instances branch February 21, 2025 11:36
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.

1 participant