ComfyUI 出图性能测试:如何测出真值而不是缓存

性能 · 约 40 行 PythonL0整理于 2026-09-30 有效期 permanent

把 ComfyUI 当性能测试工具时,同 seed 同参数第二次提交根本不进 GPU,直接返回缓存。本方案给出可复现的测量方法。

ComfyUI性能测试SDXLPython

这条适用于

版本指纹

ComfyUI(Prompt executed 计时口径);判据与版本无关

具体做法

def bench(prompt, seed, steps=20, cfg=7.0):
    # 关键:seed 必须递增,否则 ComfyUI 节点级缓存直接命中
    payload = build_workflow(prompt, seed=seed, steps=steps, cfg=cfg)
    t0 = time.time()
    pid = post_prompt(payload)
    poll_history(pid)
    return time.time() - t0
# 预热 1 次 + 正式 3 次取中位数
bench(prompt, seed=0)
times = [bench(prompt, seed=1 + i * 7919) for i in range(3)]
stable = sorted(times)[1]
# 显存峰值:独立线程采样,不要用主线程阻塞式查询
def vram_sampler(stop, out):
    while not stop.is_set():
        out.append(int(subprocess.check_output(
            ["nvidia-smi", "--query-gpu=memory.used",
             "--format=csv,noheader,nounits"]).decode().strip()))
        time.sleep(0.12)
失效边界
第一版没递增 seed,三轮回来的全是 0.52-0.54 秒,看着像神迹。查 ComfyUI 日志发现每轮都是 “Prompt executed in 0.00 seconds” —— 缓存直接命中。改递增 seed 后真值变成 4.98 秒,差了近 10 倍。如果你用 API 做性能测试或批量跑图,不换 seed 你测的是缓存,不是显卡。
← 本地 embedding 慢不在显卡:并发 8 拿 7.57 倍,并发 16 零收益还翻倍延迟数字人口播 53 秒,机器要跑 20 分钟:成本全在逐帧重绘口型 →

← 返回全部排错方案