-
Notifications
You must be signed in to change notification settings - Fork 228
Description
Thanks to @scheglov for documenting how the analyzer hosts macros, this makes the discussion much more concrete :)
For performance, the critical piece we can dig into from here seems to be the cost of merging.
By that I mean: when macros emit augmentations, how much do we pay for merging them into the analyzer/CFE data model so that the next macros can introspect on them (in cases when they are allowed to)?
What I am expecting is that the cost is very different for different types of augmentations roughly matching the split into phases, so for example new types are cheap in phase 1 because they are emitted before most of analysis happens; and phase 3 is cheap because it only changes definitions.
Phase 2 is likely the difficult one :)
What I would like to discover is if there is any difference between types of augmentation and how this plays into how we allow macros to interact. So for example if top level declarations are more or less expensive than field declarations. Two specific things that should come out of this: are there types of interaction between macros we currently allow that do not scale well with program size / number of macros / number of applications? And: are there additional types of interaction between macros we should allow because they are cheap?
Metadata
Metadata
Assignees
Labels
Type
Projects
Status