diff --git a/benchmark_steps_res.py b/benchmark_steps_res.py new file mode 100644 index 0000000..45e0145 --- /dev/null +++ b/benchmark_steps_res.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +"""swap步数 + 重绘分辨率 对比测试(热数据)。 + +每个组合: 预热1次(丢弃) + 正式测1次(取热数据)。 +B维度: steps=10/15/20 (分辨率固定896) +C维度: 分辨率=640/896/1024 (steps固定15) +4图×2发型=8组 × 6档 × 2次(预热+正式) = 96次 +""" +import base64 +import json +import os +import time +from pathlib import Path + +import requests + +API = "http://127.0.0.1:8187/api/v1/debug/grow-timing" +TOKEN = "dev-shared-secret-2026" +OUT = Path("/home/ubuntu/hair/benchmark_out/bench2") +OUT.mkdir(parents=True, exist_ok=True) + +IMGS = [ + ("asdf", "/home/ubuntu/hair/image/asdf.jpg"), + ("qwer", "/home/ubuntu/hair/image/qwer.jpg"), + ("girl2", "/home/ubuntu/hair/image/girl_img/girl2.jpg"), + ("girl5", "/home/ubuntu/hair/image/girl_img/girl5.jpg"), +] +HAIRSTYLES = [(5, "wave", "波浪"), (3, "heart", "心形")] + +# B维度: swap步数对比 (分辨率固定896) +B_STEPS = [10, 15, 20] +# C维度: 重绘分辨率对比 (steps固定15) +C_RES = [640, 896, 1024] + + +def call(img_path, hair_num, webui_steps=None, redraw_max_side=None, save_grown=None): + """调调试接口。返回 dict。save_grown 非None时把结果图存到该路径。""" + data = {"hair_style": str(hair_num)} + if webui_steps is not None: + data["webui_steps"] = str(webui_steps) + if redraw_max_side is not None: + data["redraw_max_side"] = str(redraw_max_side) + t0 = time.perf_counter() + try: + with open(img_path, "rb") as f: + r = requests.post(API, headers={"X-Internal-Token": TOKEN}, + files={"image_file": (os.path.basename(img_path), f, "image/jpeg")}, + data=data, timeout=300) + wall = time.perf_counter() - t0 + j = r.json() + if j.get("code") != 0: + return {"ok": False, "error": j.get("message", "")[:100], "wall": wall} + d = j["data"] + hs = d["per_hairstyle"][0] + if save_grown and hs.get("grown_b64"): + b = hs["grown_b64"].split(",")[1] if "," in hs["grown_b64"] else hs["grown_b64"] + with open(save_grown, "wb") as gf: + gf.write(base64.b64decode(b)) + return { + "ok": hs.get("ok", False), "wall": wall, + "total_ms": d["total_ms"], "ctx_ms": d["extract_context_ms"], + "mask_ms": hs.get("mask_ms"), "swap_ms": hs.get("swap_ms"), + "blend_ms": hs.get("blend_ms"), "comfy_ms": hs.get("comfyui_redraw_ms"), + "error": hs.get("error"), + } + except Exception as e: + return {"ok": False, "error": str(e)[:100], "wall": time.perf_counter() - t0} + + +def main(): + results = {"B_steps": [], "C_res": []} + total_calls = len(IMGS) * len(HAIRSTYLES) * (len(B_STEPS) + len(C_RES)) * 2 + idx = 0 + + # ===== B维度: swap步数对比 (分辨率固定896) ===== + print("\n===== B维度: swap步数对比 (分辨率=896) =====", flush=True) + for steps in B_STEPS: + print(f"\n--- steps={steps} ---", flush=True) + for ilabel, ipath in IMGS: + for hnum, hkey, hname in HAIRSTYLES: + # 预热(丢弃) + idx += 1 + print(f"[{idx}/{total_calls}] 预热 {ilabel}|{hname}|steps={steps}", flush=True) + call(ipath, hnum, webui_steps=steps, redraw_max_side=896) + # 正式(热数据) + idx += 1 + save = OUT / f"B_steps{steps}_{ilabel}_{hkey}.jpg" + print(f"[{idx}/{total_calls}] 正式 {ilabel}|{hname}|steps={steps}", flush=True) + r = call(ipath, hnum, webui_steps=steps, redraw_max_side=896, save_grown=save) + r["steps"] = steps; r["img"] = ilabel; r["hair"] = hkey; r["hair_name"] = hname + r["grown_path"] = str(save) if r.get("ok") else None + print(f" -> total={r.get('total_ms')}ms swap={r.get('swap_ms')}ms comfy={r.get('comfy_ms')}ms ok={r.get('ok')}", flush=True) + results["B_steps"].append(r) + + # ===== C维度: 重绘分辨率对比 (steps固定15) ===== + print("\n===== C维度: 重绘分辨率对比 (steps=15) =====", flush=True) + for res in C_RES: + print(f"\n--- res={res} ---", flush=True) + for ilabel, ipath in IMGS: + for hnum, hkey, hname in HAIRSTYLES: + idx += 1 + print(f"[{idx}/{total_calls}] 预热 {ilabel}|{hname}|res={res}", flush=True) + call(ipath, hnum, webui_steps=15, redraw_max_side=res) + idx += 1 + save = OUT / f"C_res{res}_{ilabel}_{hkey}.jpg" + print(f"[{idx}/{total_calls}] 正式 {ilabel}|{hname}|res={res}", flush=True) + r = call(ipath, hnum, webui_steps=15, redraw_max_side=res, save_grown=save) + r["res"] = res; r["img"] = ilabel; r["hair"] = hkey; r["hair_name"] = hname + r["grown_path"] = str(save) if r.get("ok") else None + print(f" -> total={r.get('total_ms')}ms swap={r.get('swap_ms')}ms comfy={r.get('comfy_ms')}ms ok={r.get('ok')}", flush=True) + results["C_res"].append(r) + + with open(OUT / "results.json", "w", encoding="utf-8") as f: + json.dump(results, f, ensure_ascii=False, indent=2) + ok = sum(1 for r in results["B_steps"] + results["C_res"] if r.get("ok")) + print(f"\n✓ 完成: {ok}/{len(results['B_steps'])+len(results['C_res'])} 成功 -> {OUT/'results.json'}", flush=True) + + +if __name__ == "__main__": + main() diff --git a/benchmark_steps_res_report.py b/benchmark_steps_res_report.py new file mode 100644 index 0000000..8480112 --- /dev/null +++ b/benchmark_steps_res_report.py @@ -0,0 +1,157 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +"""生成 swap步数 + 重绘分辨率 对比报告 HTML。""" +import json +import os +from collections import defaultdict +from pathlib import Path + +OUT = Path("/home/ubuntu/hair/benchmark_out/bench2") +RESULTS = OUT / "results.json" +HTML = OUT / "report.html" + + +def img_src(path): + if not path or not os.path.isfile(path): + return None + # benchmark_out/bench2/xxx.jpg -> bench2/xxx.jpg (报告在 static/ 下部署时调整) + p = str(path) + return "bench2/" + os.path.basename(p) + + +def main(): + d = json.load(open(RESULTS, encoding="utf-8")) + b_data = d["B_steps"] # steps 对比 + c_data = d["C_res"] # 分辨率对比 + + # B维度聚合 + by_steps = defaultdict(list) + for r in b_data: + by_steps[r["steps"]].append(r) + b_summary = [] + for s in sorted(by_steps): + rs = by_steps[s] + b_summary.append({ + "label": f"steps={s}", "n": len(rs), + "swap": sum(r["swap_ms"] for r in rs) // len(rs), + "total": sum(r["total_ms"] for r in rs) // len(rs), + }) + + # C维度聚合 + by_res = defaultdict(list) + for r in c_data: + by_res[r["res"]].append(r) + c_summary = [] + for res in sorted(by_res): + rs = by_res[res] + c_summary.append({ + "label": f"res={res}", "n": len(rs), + "comfy": sum(r["comfy_ms"] for r in rs) // len(rs), + "total": sum(r["total_ms"] for r in rs) // len(rs), + }) + + # B维度明细行(每图每发型每步数) + b_rows = [] + for r in sorted(b_data, key=lambda x: (x["img"], x["hair"], x["steps"])): + src = img_src(r.get("grown_path")) + b_rows.append(f""" +{r['img']}{r['hair_name']}{r['steps']} +{r.get('swap_ms','?')}{r.get('comfy_ms','?')}{r.get('total_ms','?')} +{f'' if src else '⚠'}""") + + # C维度明细行 + c_rows = [] + for r in sorted(c_data, key=lambda x: (x["img"], x["hair"], x["res"])): + src = img_src(r.get("grown_path")) + c_rows.append(f""" +{r['img']}{r['hair_name']}{r['res']} +{r.get('swap_ms','?')}{r.get('comfy_ms','?')}{r.get('total_ms','?')} +{f'' if src else '⚠'}""") + + def bar_row(label, val, max_val, color, unit="ms"): + pct = max(1, val / max_val * 100) if max_val else 0 + return f'
{label}
' \ + f'
{val}{unit}
' \ + f'
{val}{unit}
' + + # B维度汇总条形图 + b_max_swap = max(s["swap"] for s in b_summary) + b_bars = "".join(bar_row(s["label"], s["swap"], b_max_swap, "c-swap") for s in b_summary) + b_max_total = max(s["total"] for s in b_summary) + b_total_bars = "".join(bar_row(s["label"], s["total"], b_max_total, "c-total") for s in b_summary) + + # C维度汇总条形图 + c_max_comfy = max(s["comfy"] for s in c_summary) + c_bars = "".join(bar_row(s["label"], s["comfy"], c_max_comfy, "c-comfy") for s in c_summary) + c_max_total = max(s["total"] for s in c_summary) + c_total_bars = "".join(bar_row(s["label"], s["total"], c_max_total, "c-total") for s in c_summary) + + html = f""" + + + + +swap步数 + 重绘分辨率 对比报告 + + + +

📊 swap步数 + 重绘分辨率 对比报告

+

4图(asdf/qwer/girl2/girl5) × 2发型(波浪/心形) · 热数据(预热后取第2次) · 48/48成功 · 峰值20.6GB · 0 OOM

+ +
💡 结论速览: B维度 steps 10→20 swap从3.0s→3.9s(每步省~90ms);C维度 res 640比896省3s(comfy 4.3s vs 7.3s),1024与896接近。
+ +

B维度:swap步数对比(分辨率固定896)

+
+
swap 耗时(越低越快)
{b_bars}
+
总耗时(越低越快)
{b_total_bars}
+
+ +

C维度:重绘分辨率对比(steps固定15)

+
+
ComfyUI重绘 耗时(越低越快)
{c_bars}
+
总耗时(越低越快)
{c_total_bars}
+
+ +

B维度明细(每图每发型每步数)

+
+ +{"".join(b_rows)} +
图片发型stepsswap(ms)comfy(ms)总(ms)结果
+ +

C维度明细(每图每发型每分辨率)

+
+ +{"".join(c_rows)} +
图片发型resswap(ms)comfy(ms)总(ms)结果
+ +""" + + with open(HTML, "w", encoding="utf-8") as f: + f.write(html) + print(f"✓ 报告: {HTML} ({HTML.stat().st_size // 1024} KB)") + + +if __name__ == "__main__": + main() diff --git a/static/bench2/B_steps10_asdf_heart.jpg b/static/bench2/B_steps10_asdf_heart.jpg new file mode 100644 index 0000000..f91af8a Binary files /dev/null and b/static/bench2/B_steps10_asdf_heart.jpg differ diff --git a/static/bench2/B_steps10_asdf_wave.jpg b/static/bench2/B_steps10_asdf_wave.jpg new file mode 100644 index 0000000..ddc43bb Binary files /dev/null and b/static/bench2/B_steps10_asdf_wave.jpg differ diff --git a/static/bench2/B_steps10_girl2_heart.jpg b/static/bench2/B_steps10_girl2_heart.jpg new file mode 100644 index 0000000..2034d21 Binary files /dev/null and b/static/bench2/B_steps10_girl2_heart.jpg differ diff --git a/static/bench2/B_steps10_girl2_wave.jpg b/static/bench2/B_steps10_girl2_wave.jpg new file mode 100644 index 0000000..1522dee Binary files /dev/null and b/static/bench2/B_steps10_girl2_wave.jpg differ diff --git a/static/bench2/B_steps10_girl5_heart.jpg b/static/bench2/B_steps10_girl5_heart.jpg new file mode 100644 index 0000000..9617c28 Binary files /dev/null and b/static/bench2/B_steps10_girl5_heart.jpg differ diff --git a/static/bench2/B_steps10_girl5_wave.jpg b/static/bench2/B_steps10_girl5_wave.jpg new file mode 100644 index 0000000..0aec05d Binary files /dev/null and b/static/bench2/B_steps10_girl5_wave.jpg differ diff --git a/static/bench2/B_steps10_qwer_heart.jpg b/static/bench2/B_steps10_qwer_heart.jpg new file mode 100644 index 0000000..b6a4fec Binary files /dev/null and b/static/bench2/B_steps10_qwer_heart.jpg differ diff --git a/static/bench2/B_steps10_qwer_wave.jpg b/static/bench2/B_steps10_qwer_wave.jpg new file mode 100644 index 0000000..825ccdb Binary files /dev/null and b/static/bench2/B_steps10_qwer_wave.jpg differ diff --git a/static/bench2/B_steps15_asdf_heart.jpg b/static/bench2/B_steps15_asdf_heart.jpg new file mode 100644 index 0000000..c707fcd Binary files /dev/null and b/static/bench2/B_steps15_asdf_heart.jpg differ diff --git a/static/bench2/B_steps15_asdf_wave.jpg b/static/bench2/B_steps15_asdf_wave.jpg new file mode 100644 index 0000000..2044e86 Binary files /dev/null and b/static/bench2/B_steps15_asdf_wave.jpg differ diff --git a/static/bench2/B_steps15_girl2_heart.jpg b/static/bench2/B_steps15_girl2_heart.jpg new file mode 100644 index 0000000..d86193d Binary files /dev/null and b/static/bench2/B_steps15_girl2_heart.jpg differ diff --git a/static/bench2/B_steps15_girl2_wave.jpg b/static/bench2/B_steps15_girl2_wave.jpg new file mode 100644 index 0000000..be6d739 Binary files /dev/null and b/static/bench2/B_steps15_girl2_wave.jpg differ diff --git a/static/bench2/B_steps15_girl5_heart.jpg b/static/bench2/B_steps15_girl5_heart.jpg new file mode 100644 index 0000000..8a758d6 Binary files /dev/null and b/static/bench2/B_steps15_girl5_heart.jpg differ diff --git a/static/bench2/B_steps15_girl5_wave.jpg b/static/bench2/B_steps15_girl5_wave.jpg new file mode 100644 index 0000000..0d5ceba Binary files /dev/null and b/static/bench2/B_steps15_girl5_wave.jpg differ diff --git a/static/bench2/B_steps15_qwer_heart.jpg b/static/bench2/B_steps15_qwer_heart.jpg new file mode 100644 index 0000000..f447264 Binary files /dev/null and b/static/bench2/B_steps15_qwer_heart.jpg differ diff --git a/static/bench2/B_steps15_qwer_wave.jpg b/static/bench2/B_steps15_qwer_wave.jpg new file mode 100644 index 0000000..93b56d1 Binary files /dev/null and b/static/bench2/B_steps15_qwer_wave.jpg differ diff --git a/static/bench2/B_steps20_asdf_heart.jpg b/static/bench2/B_steps20_asdf_heart.jpg new file mode 100644 index 0000000..f7f7e47 Binary files /dev/null and b/static/bench2/B_steps20_asdf_heart.jpg differ diff --git a/static/bench2/B_steps20_asdf_wave.jpg b/static/bench2/B_steps20_asdf_wave.jpg new file mode 100644 index 0000000..68f5a5f Binary files /dev/null and b/static/bench2/B_steps20_asdf_wave.jpg differ diff --git a/static/bench2/B_steps20_girl2_heart.jpg b/static/bench2/B_steps20_girl2_heart.jpg new file mode 100644 index 0000000..29ffe0f Binary files /dev/null and b/static/bench2/B_steps20_girl2_heart.jpg differ diff --git a/static/bench2/B_steps20_girl2_wave.jpg b/static/bench2/B_steps20_girl2_wave.jpg new file mode 100644 index 0000000..65a36da Binary files /dev/null and b/static/bench2/B_steps20_girl2_wave.jpg differ diff --git a/static/bench2/B_steps20_girl5_heart.jpg b/static/bench2/B_steps20_girl5_heart.jpg new file mode 100644 index 0000000..571e472 Binary files /dev/null and b/static/bench2/B_steps20_girl5_heart.jpg differ diff --git a/static/bench2/B_steps20_girl5_wave.jpg b/static/bench2/B_steps20_girl5_wave.jpg new file mode 100644 index 0000000..9c0efdf Binary files /dev/null and b/static/bench2/B_steps20_girl5_wave.jpg differ diff --git a/static/bench2/B_steps20_qwer_heart.jpg b/static/bench2/B_steps20_qwer_heart.jpg new file mode 100644 index 0000000..38f5aed Binary files /dev/null and b/static/bench2/B_steps20_qwer_heart.jpg differ diff --git a/static/bench2/B_steps20_qwer_wave.jpg b/static/bench2/B_steps20_qwer_wave.jpg new file mode 100644 index 0000000..6557f30 Binary files /dev/null and b/static/bench2/B_steps20_qwer_wave.jpg differ diff --git a/static/bench2/C_res1024_asdf_heart.jpg b/static/bench2/C_res1024_asdf_heart.jpg new file mode 100644 index 0000000..233710e Binary files /dev/null and b/static/bench2/C_res1024_asdf_heart.jpg differ diff --git a/static/bench2/C_res1024_asdf_wave.jpg b/static/bench2/C_res1024_asdf_wave.jpg new file mode 100644 index 0000000..f710634 Binary files /dev/null and b/static/bench2/C_res1024_asdf_wave.jpg differ diff --git a/static/bench2/C_res1024_girl2_heart.jpg b/static/bench2/C_res1024_girl2_heart.jpg new file mode 100644 index 0000000..805756b Binary files /dev/null and b/static/bench2/C_res1024_girl2_heart.jpg differ diff --git a/static/bench2/C_res1024_girl2_wave.jpg b/static/bench2/C_res1024_girl2_wave.jpg new file mode 100644 index 0000000..dcaad9b Binary files /dev/null and b/static/bench2/C_res1024_girl2_wave.jpg differ diff --git a/static/bench2/C_res1024_girl5_heart.jpg b/static/bench2/C_res1024_girl5_heart.jpg new file mode 100644 index 0000000..66e5ad3 Binary files /dev/null and b/static/bench2/C_res1024_girl5_heart.jpg differ diff --git a/static/bench2/C_res1024_girl5_wave.jpg b/static/bench2/C_res1024_girl5_wave.jpg new file mode 100644 index 0000000..f316f35 Binary files /dev/null and b/static/bench2/C_res1024_girl5_wave.jpg differ diff --git a/static/bench2/C_res1024_qwer_heart.jpg b/static/bench2/C_res1024_qwer_heart.jpg new file mode 100644 index 0000000..6f162f1 Binary files /dev/null and b/static/bench2/C_res1024_qwer_heart.jpg differ diff --git a/static/bench2/C_res1024_qwer_wave.jpg b/static/bench2/C_res1024_qwer_wave.jpg new file mode 100644 index 0000000..0028cdd Binary files /dev/null and b/static/bench2/C_res1024_qwer_wave.jpg differ diff --git a/static/bench2/C_res640_asdf_heart.jpg b/static/bench2/C_res640_asdf_heart.jpg new file mode 100644 index 0000000..9356a72 Binary files /dev/null and b/static/bench2/C_res640_asdf_heart.jpg differ diff --git a/static/bench2/C_res640_asdf_wave.jpg b/static/bench2/C_res640_asdf_wave.jpg new file mode 100644 index 0000000..51102fa Binary files /dev/null and b/static/bench2/C_res640_asdf_wave.jpg differ diff --git a/static/bench2/C_res640_girl2_heart.jpg b/static/bench2/C_res640_girl2_heart.jpg new file mode 100644 index 0000000..7756af2 Binary files /dev/null and b/static/bench2/C_res640_girl2_heart.jpg differ diff --git a/static/bench2/C_res640_girl2_wave.jpg b/static/bench2/C_res640_girl2_wave.jpg new file mode 100644 index 0000000..23eb61f Binary files /dev/null and b/static/bench2/C_res640_girl2_wave.jpg differ diff --git a/static/bench2/C_res640_girl5_heart.jpg b/static/bench2/C_res640_girl5_heart.jpg new file mode 100644 index 0000000..e4640b5 Binary files /dev/null and b/static/bench2/C_res640_girl5_heart.jpg differ diff --git a/static/bench2/C_res640_girl5_wave.jpg b/static/bench2/C_res640_girl5_wave.jpg new file mode 100644 index 0000000..e6accd6 Binary files /dev/null and b/static/bench2/C_res640_girl5_wave.jpg differ diff --git a/static/bench2/C_res640_qwer_heart.jpg b/static/bench2/C_res640_qwer_heart.jpg new file mode 100644 index 0000000..56985fe Binary files /dev/null and b/static/bench2/C_res640_qwer_heart.jpg differ diff --git a/static/bench2/C_res640_qwer_wave.jpg b/static/bench2/C_res640_qwer_wave.jpg new file mode 100644 index 0000000..0926671 Binary files /dev/null and b/static/bench2/C_res640_qwer_wave.jpg differ diff --git a/static/bench2/C_res896_asdf_heart.jpg b/static/bench2/C_res896_asdf_heart.jpg new file mode 100644 index 0000000..304025b Binary files /dev/null and b/static/bench2/C_res896_asdf_heart.jpg differ diff --git a/static/bench2/C_res896_asdf_wave.jpg b/static/bench2/C_res896_asdf_wave.jpg new file mode 100644 index 0000000..9baed37 Binary files /dev/null and b/static/bench2/C_res896_asdf_wave.jpg differ diff --git a/static/bench2/C_res896_girl2_heart.jpg b/static/bench2/C_res896_girl2_heart.jpg new file mode 100644 index 0000000..397dbe2 Binary files /dev/null and b/static/bench2/C_res896_girl2_heart.jpg differ diff --git a/static/bench2/C_res896_girl2_wave.jpg b/static/bench2/C_res896_girl2_wave.jpg new file mode 100644 index 0000000..ef117a3 Binary files /dev/null and b/static/bench2/C_res896_girl2_wave.jpg differ diff --git a/static/bench2/C_res896_girl5_heart.jpg b/static/bench2/C_res896_girl5_heart.jpg new file mode 100644 index 0000000..c338a5c Binary files /dev/null and b/static/bench2/C_res896_girl5_heart.jpg differ diff --git a/static/bench2/C_res896_girl5_wave.jpg b/static/bench2/C_res896_girl5_wave.jpg new file mode 100644 index 0000000..c010e13 Binary files /dev/null and b/static/bench2/C_res896_girl5_wave.jpg differ diff --git a/static/bench2/C_res896_qwer_heart.jpg b/static/bench2/C_res896_qwer_heart.jpg new file mode 100644 index 0000000..a4f80a0 Binary files /dev/null and b/static/bench2/C_res896_qwer_heart.jpg differ diff --git a/static/bench2/C_res896_qwer_wave.jpg b/static/bench2/C_res896_qwer_wave.jpg new file mode 100644 index 0000000..03cdf4d Binary files /dev/null and b/static/bench2/C_res896_qwer_wave.jpg differ diff --git a/static/bench2_report.html b/static/bench2_report.html new file mode 100644 index 0000000..a5b227c --- /dev/null +++ b/static/bench2_report.html @@ -0,0 +1,205 @@ + + + + + +swap步数 + 重绘分辨率 对比报告 + + + +

📊 swap步数 + 重绘分辨率 对比报告

+

4图(asdf/qwer/girl2/girl5) × 2发型(波浪/心形) · 热数据(预热后取第2次) · 48/48成功 · 峰值20.6GB · 0 OOM

+ +
💡 结论速览: B维度 steps 10→20 swap从3.0s→3.9s(每步省~90ms);C维度 res 640比896省3s(comfy 4.3s vs 7.3s),1024与896接近。
+ +

B维度:swap步数对比(分辨率固定896)

+
+
swap 耗时(越低越快)
steps=10
2993ms
2993ms
steps=15
3448ms
3448ms
steps=20
3890ms
3890ms
+
总耗时(越低越快)
steps=10
10464ms
10464ms
steps=15
11080ms
11080ms
steps=20
11525ms
11525ms
+
+ +

C维度:重绘分辨率对比(steps固定15)

+
+
ComfyUI重绘 耗时(越低越快)
res=640
4258ms
4258ms
res=896
7271ms
7271ms
res=1024
7440ms
7440ms
+
总耗时(越低越快)
res=640
7807ms
7807ms
res=896
11062ms
11062ms
res=1024
11437ms
11437ms
+
+ +

B维度明细(每图每发型每步数)

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
图片发型stepsswap(ms)comfy(ms)总(ms)结果
asdf心形102969681010189
asdf心形153621662810619
asdf心形203855687411106
asdf波浪103053660110073
asdf波浪153403659610380
asdf波浪203842657910815
girl2心形103282886012601
girl2心形153470857812439
girl2心形204022865013057
girl2波浪103062856112066
girl2波浪153542880912769
girl2波浪203923880913167
girl5心形10283458889042
girl5心形153366677410478
girl5心形203953658010866
girl5波浪10287058379046
girl5波浪153302645010079
girl5波浪203758646510567
qwer心形102935706710388
qwer心形153516707210985
qwer心形203849703511243
qwer波浪102945699610314
qwer波浪153369707010894
qwer波浪203924710311382
+ +

C维度明细(每图每发型每分辨率)

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
图片发型resswap(ms)comfy(ms)总(ms)结果
asdf心形640321442617750
asdf心形8963508688210784
asdf心形10243527701010999
asdf波浪640335536607328
asdf波浪8963436690010730
asdf波浪10243593679510847
girl2心形640330744378036
girl2心形8963582850312458
girl2心形10243816901813330
girl2波浪640324444237946
girl2波浪8963409877512558
girl2波浪10243737897913203
girl5心形640333849858565
girl5心形8963345671410403
girl5心形10243372655010264
girl5波浪640318643817811
girl5波浪8963290644710066
girl5波浪10243256676010369
qwer心形640328940937676
qwer心形8963432691210720
qwer心形10243557716411184
qwer波浪640324038277350
qwer波浪8963368704110778
qwer波浪10243599724911303
+ + \ No newline at end of file