[Request for Feedback] TuneUp: Per node execution times

Hello Dynamo Users!

We have recently made available an Extension to Dynamo called TuneUp as a beta release, which allows you to profile (Check how long something runs) each node in your graph :slight_smile: … a long requested feature!

Please note that TuneUp will only work for Dynamo 2.5+ and as such, is only currently available in Dynamo Sandbox as of the publication of this post.

Please read all about it on our new blog post: https://dynamobim.org/tuneup-extension-explore-your-node-and-graph-execution-times/

This thread is to provide feedback on the TuneUp Extension:

  1. What do you like about it?
  2. What could be improved?
  3. What would you like to see in Phase 2?
  4. Any other general comments?

Known Issues:

  • TuneUp currently has one memory leak and will cause hanging background processes.

Cheers,

The Dynamo Team

14 Likes

Looks promising. The one thing I prefer about Grasshopper’s profiler is that the execution time is shown under each node, which allows for easier diagnostics at a glance:

image

However, I assume this is similar to what was being hinted at in this part of the post:

(We have longer-term plans of making it interactive in-canvas too!)

The only other suggestion I have is to look into adding a percentage of the total time for each node which would make it easier to see how performance changes with the amount of data we provide. Other than that, it’s a very welcome addition and should be useful in practice.

4 Likes

I assume renaming the node updates the Name field so that we can differentiate between repetitive nodes and code blocks?

It looks like the nodes are listed in the order that they run. Is there any chance (depending on how nodes are connected or not connected) that certain nodes execute in a different order between runs?

Could tracking functionality be added? i.e. Select nodes that you want to track in the TuneUp panel and TuneUp will automatically highlight them for you in consecutive runs.

Really excited about this and all the other new toys you all have been working on. We appreciate it!

3 Likes

Indeed, renamed nodes will show up :slight_smile:

image

Node execution on a per-run basis may change pending the data flowing through them - You can reorganize each column sequentially upwards or downwards (So by order of execution, name or execution time).

Tracking functionality sounds interesting! We’re looking at having nodes in groups collated together.

1 Like

For the first pass, rather than introduce a potentially messy new UX problem we decided to get an extension out there that is useful with the intention of putting an in-canvas application later :slight_smile:

Percentage of time-consumption is a great idea!

2 Likes

As the first reply indicates it would be good if the numbers could be tied onto the nodes as well.

I noticed you have current and previous run time, I wonder if it is worth while that these numbers are interlinked and colour coded for if it took longer, same or less time.

I know the package manager indicates that the extension is for Dynamo 2.5 or above only but it will still let you install this package.

Therefore is there any chance the Dynamo error log message could be tweaked to incorporate this or add a additional error line afterwards?

Eg TuneUp: TuneUp utilizes new API Features that are only available in dynamo v2.5 or above.

1 Like

Good shout Brendan - will have a look if this is easy to implement :slight_smile:

At the very least we can update the package description in the Package Manager.

2 Likes

This is awesome and will be very helpful.

Some graphs need to be closed after each run as sequence of information is very important. Is there a way to keep the previous run data if one was to close out and open the same script and run again?

I have not played with this yet as most of my graphs interact with Revit.

1 Like

Hello Steven,

No current way to save information - would you be able to please outline a use-case for this? I’m assuming it’s a previous run state of the graph in question ?

Sure,

I have a very large graph (image below). It has multiple wait nodes and transaction.end nodes. If I were to press run twice the graph would not execute properly. I need to close the graph after each run. Is it possible to export to a csv for tracking?

When working with wait nodes they do not always wait for new information on the second run.

It could also be nice to compare runtimes from one Revit project to another. For this, though you have to completely close Dynamo when you change to a new project.

2 Likes

@Brendan_Cassidy a new message has now been added to the package :slight_smile:

Longer term we may look into having the package dynamically understand what version of Dynamo it is running upon via reflection and pop up a warning message. Would be in Phase 2 though.

1 Like

why would the graph not work being run twice? (we added a force-execute button to TuneUp so that the entire graph will run again)… it’s a good point though that I don’t think this has been tested exhaustively with element binding… fun for sure.

1 Like

Hello, @solamour!

TuneUp is one of the most useful tools for Dynamo!
Some requests:

  1. Can we get not just auto focusing on node, selected in TuneUp, but also highlight any selected node in Tuneup to see it’s time?
  2. Maybe add some other shortcut (like F6) to Re-Execute?
  3. Also Total Time/ Current Time on top of the TuneUp tab will be good.
1 Like

Hello @Vladimir - some great suggestions! I’m super happy you are liking TuneUp :slight_smile: We use it on the team a lot too.

I’ll add in the suggestions to our TuneUp Phase 2 task list.

@solamour, one more thing)

When opening TuneUp first time, Dynamo focuses on frozen node (last node of one of several graph’s branches). It’s not handy, especially with lage graphs. Thanks!

P.S. Some other bug: when we copy node with CTRL key, suddenly original node jumps to cursor position. Thought it fixed in 2.6, but bug exists.

1 Like
  1. Option to show first line of Codeblock as name in TuneUp list. (maybe for small 1-line codeblocks only). Show function’s Name as Name if codeblock is function. It’ll be easier to see what the codeblock doing in TuneUp list.
1 Like

This one’s a little harder. We currently allow you to rename the CodeBlock and that name will surface in TuneUp though! Is that functionality not enough?

@solamour,
renaming of nodes takes a lot of time, maybe you could create autorenamer than with above rules?

1 Like

Will add it to the task list as an improvement to be balanced against the rest :slight_smile:

2 Likes