Nodes/comfy-ovum/Timer 🥚
ComfyUI Node

Timer 🥚

A workflow stopwatch that tells you where the time actually went

By sfinktah·Created about a year ago·Updated 10 months ago· 7
Timer 🥚
  • any_in
  • any_out
  • last_run
notes

Timer answers the question everyone hits eventually: "which node in this workflow is eating my minutes?" It's a stopwatch you drop into the graph, and the author is refreshingly honest about it - the README calls it "somewhat rough around the edges with a number of confusing buttons and inputs (thankfully you can ignore them all)."

It's a lazy man's profiler, and that's a compliment. ComfyUI's own performance overlay and the debug menu exist, but for a quick "is my VAE decode or my upscaler the bottleneck" sanity check, dropping a couple of these in is the fastest route to an answer.

What it does

The node records timing info when the job runs and reports it back. The outputs are:

  • any_out (*) - a passthrough of whatever you feed any_in.
  • last_run (STRING) - the timing summary from the last execution.

The inputs are equally minimal: notes is a free-text label that gets recorded with the timing, and any_in is just there so you can wire the timer into the workflow at the point you care about - the tooltip says it's only required if you want notes recorded when the run happens. It's marked as an output node, so it executes and shows you its results on the frontend.

There are, the README hints, buttons and inputs you can safely ignore. That's the whole design: don't fight the UI, just wire the thing and read last_run.

How to actually use it

Plop a Timer before and after the section you suspect, or right at the end of a pipeline stage. Wire a value through each one's any_inany_out so they sit on the execution path. Put a note in notes ("VAE decode", "upscale pass") so you can tell the results apart. Run once, read last_run, compare. That's it.

If you want node-by-node numbers, ComfyUI's built-in profiling (the graph "performance" tracking) is more thorough - this is for the "I just want to know if the hires-fix pass is the expensive one" case where a full profile is overkill.

Installing it

Comes with comfy-ovum:

cd ComfyUI/custom_nodes
git clone https://github.com/sfinktah/comfy-ovum

Restart, or find it via ComfyUI Manager under "comfy-ovum". No models, no special dependencies - the pack's requirements are all lightweight and mostly already present (numpy, pillow, requests, aiohttp).

Gotchas

Timing measurements are inherently noisy - first run after a model load includes disk reads and JIT compile that later runs don't. Run your comparison twice and take the second numbers. And because it's an output node that reports last_run as a string, the value is a snapshot from the previous execution, not a live clock; if the string looks stale, run the workflow and check again. Beyond that, the only real enemy here is the "confusing buttons" the author warned you about - if a widget doesn't obviously matter, it probably doesn't, so leave it alone.

Categoryovum

Inputs (2)

NameTypeDefaultDescription
notesoptSTRINGThis will be recorded when the job is dequeued
any_inopt*This is just used connect the timer to the workflow somewhere (only required if you want 'notes' to be recorded when the workflow runs)

Outputs (2)

NameTypeDescription
any_out*
last_runSTRING