Dynamo extremely slow

Hi

I’m using Revit 2021 and Dynamo 2.6 and the graph is very large. When I drop a new (unconnected) node on the canvas, the cursor spins for about 30sec freezing Revit and Dynamo. Other times, it completely freezes for minutes on end. The components aren’t even connected so there is no reason the graph should even be re-executing. The issue is significantly worse since updating from Revit 2020 and Dynamo 2.3.

What could be causing this issue? I tried copy/pasting all the nodes into a new file but it doesn’t seem to copy across the groups which is very problematic. I’ve restarted my PC which doesn’t resolve the issue. I’ve also cleared out the element bindings.

There are a few notifications in Dynamo: “Dynamo has detected a conflict with a dependency and may be unstable. If any issues are detected, please uninstall addins or packages and contact the provider.”

Affected packages are archilab2022 Version=1.0.0.0, , MonocleViewExtension, Xceed.Wpf.AvalonDock (???), RhythmRevit, Version=2021.7.3.0, RhythmRevit2022, Version=2021.3.1.0.

Not sure why there are two different Rhythm errors. I know that this dependency has been an issue right from the beginning of Dynamo. Could this be the problem? Do we know which are the conflicts? @john_pierson @solamour

Thanks

Have you already tried reinstalling?

I’d try removing all packages (cut/paste to a quarantine folder) and following the package dependency prompts for reinstallation - that way the problematic package can be seen. Some of those packages are a bit iffy too, I’ve had issues with ampersand in the past. At times rhythm/clockwork have had dependency issues for me but the latest builds seem OK - I haven’t seen that for a while.

I assume you are, but if not test it in manual mode also. I find most graphs aren’t great in automatic mode when scripts are large. Grasshopper she ain’t.

3 Likes

I’ve removed many packages. I’ll do some more testing but I think the culprit might be TuneUp - somehow re-calculating every time a node is placed on the canvas, even if it is unconnected. This would explain why the issue is happening after a Revit 2020 upgrade. Or, I’ve hit the limit of what Dynamo can handle…

Would be good if someone from the Dynamo team could clarify/troubleshoot @JacobSmall @solamour

Hi @Paul_Wintour - Can look next week… on vacation this week for my daughter’s first birthday :blush::partying_face::partying_face::blush:

Would you be willing to share the graph so we can test?

4 Likes

@solamour I can supply it by email as long as it is not publically circulated.

1 Like

Perfect and more than happy to keep it private - feel free to DM here or email me at sol.amour@ autodesk.com :blush:

1 Like

Thanks Sol. Will send it through shortly.

@solamour , our best wishes!!

@Paul_Wintour , try to breakdown it to custom nodes. Handling of big amount of nodes in UI is slow… I have 3mb script, it opens about 2minutes. (No run, just opening). But if you bypass opening UI with Dynamo Player, it works fast and fine.

1 Like

Do you use pyRevit by any chance? I’m experiencing similar issues most of the time and disabling pyRevit somehow helps.

What issues are you having with pyRevit performance?
There are a couple of settings you can use with pyRevit that affect Dynamo.

Hi @Paul_Wintour I’m back from vacation now, so feel free to pass on your dataset to my Autodesk email if you are still cool doing so! :raised_hands:

The two errors are for the two Revit API DLLs being referenced. Ignorable in this case.

As for what is slowing it down, I am suspicious of the onNodePlaced event being used a lot by one of the View Extensions.

For Monocle, it does not use the NodePlaced event at all anymore because I noticed similar things as well (back in 2019) when I had a custom node colorizer that worked on the fly.

Rhythm uses the node placed event, but only for Rhythm nodes. And only on the latest node that was placed. If the node is of Rhythm it does the rename thing, if not, it moves on. It most certainly isn’t querying 30 seconds’ worth of data.
Open-Source code for this here

My advice would be to disable the TuneUp Extension and see if anything improves.

1 Like

Another thing I noticed that might be unrelated is, you have an incompatible version of ArchiLab installed if you are in 2020.

IIRC, the last two numbers need to be your Revit version, and yours ends with 22.
image

It also might be worth removing any element bindings from your graph.

@JacobSmall has a full post on that here:
Element Binding in Revit

and monocle has a “Flush Bindings” options built into the help menu. You select flush, hit save, close graph and reopen.

3 Likes

Tuneup definitely has an impact on performance as it adds profiling calls to each node - but that should only be during execution.

2 Likes

If it is on run automatic, that would mean constantly correct?

5 Likes

well constantly during execution, not just dragging nodes around.

1 Like

We have made some changes for 2.13 that should help with this :smiley:

2 Likes

Hi @Paul_Wintour - Have had a chance to test this now, and for the time being until 2.13 drops advice is as follows:

Please remove “Tune-Up” unless running in Manual Mode.

In all Package iterations I ran, I got the following results:

  • Less than ~0.25 seconds lag when placing the “Categories” node in Manual mode
  • Around 5-6 seconds lag when placing the “Categories” node in Automatic mode

With Tune-Up installed, I had a series of long-execution events that I crashed out of. So Tune-Up is definitely a problem (Hence why it’s a package in Beta and not out-of-the-box yet). When we bring Tune-Up into Dynamo we will investigate deeper and create the necessary guardrails to this kind of unintended behavior.

The other slowness is most likely a scaling issue that we’ve done work to improve in Dynamo 2.13, so I can test again after that release is out into the wild as our guess is that most of this will be resolved :slight_smile:

FYI @Michael_Kirschner2

Methodology:

  1. Run full package set (Exception of Lunchbox and GD on my machine) that you have. Record results
  2. Run only necessary package set used in graph. Record results.
  3. Run only necessary package set used in graph + TuneUp. Record results.

Next step would have been: Run slice of package set to isolate issue, but we found it in TuneUp before getting this far.

3 Likes

@solamour Thanks for looking into this. Kind of ironic that a plug-in to help you optimise graphs ends up making it unusable. But I take your point it is WIP.

So this issue of course with Dynamo 2.13 is that it will only run in Revit 2022, right?

Also, when you say ‘scaling issues’, do you mean the size of the graph or geometry scaling? What is the issue specifically?

1 Like