TouchProfiler – a chatbot inside TouchDesigner to Optimise your .toe files

Hi everyone,

TouchDesigner is incredible for creative flow — but as patches grow, performance problems sneak in, and it’s not always clear where or why. I built TouchProfiler to help with that.

It’s a small tool that looks through your patch, measures cook times, GPU usage, memory load and connections between operators. Then it sends that info to GPT (OpenAI), and gets back suggestions like:

“Based on the provided OP metrics, here’s an evaluation of your project’s performance along with actionable optimization suggestions:”
“### Performance Overview:”
“1. Average Cook Times:”
“- The highest average cook times for operators range from approximately 0.0559 ms (ramp1) to 0.0737 ms (project1).”
“- The component noise2 has significant GPU cook time (0.6236 ms), indicating potential GPU bottlenecks.”
“2. Dependency Structure:”
“- Several nodes are not clearly optimizing their cook times, such as constant2, constant1, and comp1, which could be resulting in additional overhead.”
“3. Memory Usage:”
“- Average memory usage across nodes indicates no significant load, suggesting memory is not a primary concern in this case.”
“### Actionable Optimization Suggestions:”
“1. Evaluate noise2:”
“- This operator shows a notably higher GPU cook time. Test simplifying or reducing parameters (like complexity or resolution) to see if that improves overall performance.”
“- Consider whether the complexity of noise generation is necessary at every frame depending on the application.”
“2. Reduce Cookbook Frequencies:”
“- For constants like constant1 and constant2, ensure they are only being updated or cooked when necessary. If those values are static, consider changing their cook-types to “Always” or employing a Null CHOP to minimize unnecessary computations.”
“3. Optimize Ramps:”
“- Review the resolutions of both ramp1 and ramp2 which are set at 1000x1000. If you can lower this resolution without affecting the visual output, it would reduce cook times.”
“4. Re-evaluate Feedback Loops:”
“- Both feedback setups (feedback1 and feedback2) which utilize weighty operations could be fine-tuned to sample less frequently or use different settings (e.g., scale down the inputs).”
“5. Monitor comp1 and comp2:”
“- Since compositing can be expensive, look at the blending modes used and reduce any unnecessary passes. Turn off anti-aliasing in cases where it might not be essential to improve speed.”
“6. Utilize Performance Monitor:”
“- Continuously use the Performance Monitor to identify the nodes that consistently take long to cook and prioritize optimization efforts there.”
“### Summary:”
“While overall cook times are manageable, notable performance costs arise from specific operators, particularly noise2. Assessing the usage and potential optimizations of feedback nodes, constants, and ramp resolutions will likely yield improvements. Regular monitoring of the performance metrics after adjustments will help ensure sustained performance gains.”

You get the idea.

Instead of guessing or manually toggling things on/off to figure out what’s going wrong, TouchProfiler does the boring work for you and lets GPT explain it — based on actual data from your project.

Bonus:
The assistant is trained with Derivative’s own optimisation docs (like Optimize and Optimized Python Expressions), so it doesn’t give random ChatGPT fluff — it knows TouchDesigner-specific best practices.


Some things you might use it for:

  • Finding what’s behind inconsistent frame drops
  • Optimising GPU-heavy networks
  • Teaching: showing students why something’s inefficient
  • Debugging messy patches you didn’t build :slight_smile:

Repo:

What’s inside:

  • A .tox file: profiler, sampler, and GPT interface
  • An example .toe file
  • Editable system prompt and input/output
  • MIT licensed — use it freely

Would love to hear if it’s helpful, or if there’s something you’d want it to do differently. Happy to improve it based on what the community actually needs.

Cheers,
Saim

1 Like

Thanks for sharing this. However, be very wary of suggestions it gives. Many of these aren’t actually correct.

This is the opposite of correct, as this will make nodes always cook, increasing the workload and doing away with optimizations we automatically do for you.

Feedback is a very cheap operation, as it’s simply a copy operation to backup the data at the end of the frame.

Compositing is also quite cheap, as far as TOP operations go.