You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Jiří Cihelka edited this page Jan 2, 2024
·
2 revisions
To keep track of relationships between objects, the library uses a dependency graph. Every bound object (for more info on bound objects see Geometry objects) is a node in the graph. The graph is directed and acyclic. The edges of the graph represent dependencies between objects.
What the dependency graph is used for
To maximize performance, the library tries to calculate only the objects that are necessary. This is done by calculating only the objects that are needed to calculate the result of the construction. The dependency graph is used to determine which objects are needed.
It also enables the caching of values and clearing of the cache when a dependency changes. Currently caching is only implemented on the per-object level. This means, that if any of the dependencies of an object changes, all of the values of the object are recalculated. This is not optimal, but it is a good start (it is rare that a change in one dependency doesn't affect most of the values of the object in every case).