-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/realtime graphs v3 #379
base: main
Are you sure you want to change the base?
Conversation
eb00c57
to
4cbf8ba
Compare
Okay, @samuelduchesne it has been a long road, BUT, I think this is ready! The only test that is failing, is, once again, that Here's a summary of some of the major changes:
I think there is still performance to be gained in a few places, particularly with determining optimal usage of Todos / Further Exploration
|
Here are some benchmark results for the following benchmark, run in main and in this branch: Component Replacement BenchmarkingThe idea is to just set a bunch of stuff to a single component, and then test to see how long it takes to replace that component with another. Because the original algorithm requires traversing every template completely, as the number of templates increases, performance decreases. The graph based algorithm explicitly knows where each component is used, so this step is avoided altogether. Lines 261 to 285 in e943130
As you can see, knowing the parents of each component significantly improves the performance, Unique Components BenchmarkingFor unique components, the original method should also get worse as the number of templates increases. However, it will also get significantly worse as the number of objects in the _CREATED_OBJECTS store increases, primarily due to the sorting in Lines 291 to 323 in e943130
If the extra components are also added to the library (as opposed to just being added to the store, as shown above), each component would incur the full penalty of calling Additionally, the more objects there are that require replacement - either because one object is being used in many places, or there are many equivalent objects, each object will benefit from the component replacement optimization. DiscussionA lot of the gains of unique components can probably be acquired from simply dropping Another simple optimization is to require that ids are unique (the graph based branch implements this) and to bail out of component replacement and return ReproductionIf you pull the this branch and run |
add cleanup to fixtures fix unique_addition create test_change_ids move created_objects to umibase and improve performance improve id handling for combine to accomodate non-mutable ids fix validate for zoneconstructionset fix fixture names fix fixture names
8d28bba
to
3f89938
Compare
No description provided.