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 componentnoise2
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 asconstant2
,constant1
, andcomp1
, 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. Evaluatenoise2
:”
“- 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 likeconstant1
andconstant2
, ensure they are only being updated or cooked when necessary. If those values are static, consider changing their cook-types to “Always” or employing aNull CHOP
to minimize unnecessary computations.”
“3. Optimize Ramps:”
“- Review the resolutions of bothramp1
andramp2
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
andfeedback2
) which utilize weighty operations could be fine-tuned to sample less frequently or use different settings (e.g., scale down the inputs).”
“5. Monitorcomp1
andcomp2
:”
“- 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, particularlynoise2
. 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
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