Local Timer Start
Start the stopwatch — the other half of Local Timer End
- passthrough
- passthrough
- timer
Local Timer Start is the unglamorous half of the pack's stopwatch pair, and it's only useful in combination with Local Timer End - but it's the half you place, so it's worth one article. The whole trick is simple: this node records the current time and hands it forward. Its partner, placed after the section you care about, subtracts that timestamp from the current time and tells you how long the nodes in between took.
It works because of a passthrough design. The node takes passthrough - any value or list, typed as a wildcard so it accepts anything - and returns it unchanged on one output, while stamping a second output, timer, with an epoch timestamp. The passthrough lets you drop the node into your data path without disturbing your workflow at all; the timer output is what you wire to a Local Timer End node.
How to place it
You put it just before the node(s) you want to time. For example, if you want to know how long a specific KSampler stage takes, wire Local Timer Start's timer output to a Local Timer End that sits downstream of that KSampler, and thread whatever data you like through both passthroughs. ComfyUI executes in dependency order, so "before" and "after" mean graph order, not canvas position. Multiple pairs are independent - no shared global state - so you can time a different section with each pair you add, which is what the "Local" in the name is about.
A deliberate quirk worth understanding: the node declares itself changed on every run (the IS_CHANGED trick), so it always re-executes and always stamps a fresh time. That's what makes the measurement honest - if ComfyUI cached the Start's output, you'd be timing a stale timestamp and the numbers would be nonsense. The flip side is that anything downstream of its passthrough output also re-runs, because its output changed. Fine for timing; not what you want if you were hoping the passthrough would protect an expensive section from re-execution.
Install
It's part of Img Label Tools: ComfyUI Manager → search "Img Label Tools" → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/rjgoif/ComfyUI-Img-Label-Tools
Restart ComfyUI after either. No models, no extra dependencies.
Gotchas
The only real trap is pairing: the timer output only feeds a Local Timer End node's timer input (it's a dedicated TIMER type), so don't try to log the timestamp elsewhere. And if you place the Start after the section you meant to time in dependency order, you'll get a near-zero reading and a confused afternoon. Keep the pair symmetric - one Start per End - and you're good.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| passthrough | * | Any value or list — passed through unchanged. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| passthrough | * | The input value(s), unchanged. |
| timer | TIMER | Epoch timestamp — wire this to a TimerEnd node. |