-
Notifications
You must be signed in to change notification settings - Fork 51
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
Smart component speedup #829
Conversation
regression tests still taking too long... |
in the other PR #828, the regression tests failed after 111 minutes with a suspicious error related to smart components, which might be relevant for here:
|
That suspicious error is why this branch has better error messages. As for them still taking too long, remember that the |
ok but what does that have to do with them being slow? |
oh I see, this PR will speed them up but only after it gets merged.. but how faster? have you tried offline? |
Wrapping |
i suppose the github runners are slower and support less parallelism than your laptop, but I'd be quite surprised if the runtime goes down from 1 hour and a half to a few minutes just because of the changes in this PR.. |
Prepare to be surprised. I'm still waiting for the version on main to finish. |
With this patch: |
that's impressive but I doubt it has to do with (avoiding the use of) pickle itself, more like the fact that you're now not deepcopying the unneeded attributes, right? |
The problem is that there is a cyclic link between a GSPath.node and GSNode._parent. Deepcopy doesn't do well copying cyclic dependencies. |
couldn’t that be avoided by implementing |
yes maybe, but I think the purpose here was to make a more selective copy by excluding attributes that aren't needed for the task at hand, am I right @simoncozens? Perhaps the method name |
Using
pickle
was indeed faster than usingdeepcopy
, but it's still slower than shallow-cloning each node. This should speed up the regression tests significantly (and anything that uses smart components).Also a slightly more helpful error message when a smart component is not interpolatable.