Nodes/ComfyCollectorNodes/Timer Stop (CCN)
ComfyUI Node

Timer Stop (CCN)

Find out where your workflow actually burns its time

By valkymaera·Created 4 months ago·Updated 10 days ago· 1
Timer Stop (CCN)
  • trigger
  • formatted
  • seconds
start_time

You've got a workflow that's been getting slower and you don't know why. Or you just added a fancy new conditioning node and want to know what it costs. Timer Stop (CCN) is the payoff half of the pack's stopwatch: feed it a timestamp from a Timer Start (CCN), and it tells you how long the work in between took - both as a human string and as raw seconds.

The output format is the nice part. formatted gives you things like 42s, 4m32s, or 1h05m03s - filename-safe and instantly readable. seconds gives you the raw FLOAT if you want to do math on it or feed it into a report. It also prints the elapsed time to the server console, which is where you'll actually catch it in the middle of a batch.

How it works

The node captures its own timestamp at execution and subtracts the start_time you fed in. Elapsed time is just now - then. Simple. The interesting bit is ComfyUI's execution order, and that's what the trigger input is for.

ComfyUI runs a node when its inputs are ready, and by default Timer Stop only depends on Timer Start - which fires immediately, before anything downstream of it. If you wire Timer Stop directly to Timer Start and nothing else, it measures approximately zero. The fix is the trigger input, and the tooltip says it plainly: "Connect any output here to force this node to evaluate after that node. The value is ignored."

So the pattern is: Timer Start → (your work) → Timer Stop's trigger. Wire the output of the work (or anything downstream of it) into trigger, and ComfyUI is forced to finish that work before Timer Stop runs - then you get a real elapsed time. This is the standard "dependency-forced ordering" trick from the plumbing layer, and it's the difference between a stopwatch that works and one that returns 0.00s forever.

The inputs and outputs that matter

  • start_time (FLOAT) - the timestamp from a Timer Start. Has a tooltip: "Timestamp from a TimerStart node."
  • trigger (any) - the ordering lever. Wire the output of the work you're timing into this; the value is ignored.
  • Outputs: formatted (STRING) and seconds (FLOAT).

How to install it

ComfyCollectorNodes, one install: ComfyUI Manager → search ComfyCollectorNodes → Install, or:

cd ComfyUI/custom_nodes
git clone https://github.com/valkymaera/ComfyCollectorNodes.git

Restart ComfyUI. No pip step.

Common issues

The forgotten trigger is by far the most common failure - you'll see 0s and assume the node is broken. It's not; it measured exactly nothing because it ran first. Second, like Timer Start, these nodes ship from the wip/ folder, which is present in a git clone but excluded from the published registry package - if they're absent after an install, clone the repo.

And one honest limitation: this is wall-clock time, not GPU time. Other processes and caching (ComfyUI's node cache skips unchanged nodes, so a cached run is suspiciously fast) can skew it. For relative comparisons of the same workflow, though, it's perfectly reliable.

CategoryCCN/utils

Inputs (2)

NameTypeDefaultDescription
start_timeFLOATTimestamp from a TimerStart node.
triggeropt*Connect any output here to force this node to evaluate after that node. The value is ignored.

Outputs (2)

NameTypeDescription
formattedSTRING
secondsFLOAT