diff --git a/benchmark_res_compare.py b/benchmark_res_compare.py
new file mode 100644
index 0000000..4f310d0
--- /dev/null
+++ b/benchmark_res_compare.py
@@ -0,0 +1,99 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""分辨率对比测试:4图×5发型=20行,每行4种分辨率(不缩放/896/768/640),steps=15。
+热数据:每个组合预热1次(丢弃)+正式1次。OOM的跳过记录为失败。
+"""
+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/bench3")
+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 = [
+ (1, "ellipse", "椭圆"), (2, "flower", "花瓣"), (3, "heart", "心形"),
+ (4, "straight", "直线"), (5, "wave", "波浪"),
+]
+# 分辨率档:0=不缩放(原图)
+RES_LIST = [("orig", "0"), ("896", "896"), ("768", "768"), ("640", "640")]
+RES_TITLES = ["原图(不缩放)", "896", "768", "640"]
+STEPS = 15
+
+
+def call(img_path, hair_num, redraw_max_side, save_grown=None, timeout=300):
+ data = {"hair_style": str(hair_num), "webui_steps": str(STEPS),
+ "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=timeout)
+ wall = time.perf_counter() - t0
+ j = r.json()
+ if j.get("code") != 0:
+ return {"ok": False, "error": j.get("message", "")[:80], "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"], "swap_ms": hs.get("swap_ms"),
+ "comfy_ms": hs.get("comfyui_redraw_ms"),
+ "error": hs.get("error"),
+ }
+ except Exception as e:
+ return {"ok": False, "error": str(e)[:80], "wall": time.perf_counter() - t0}
+
+
+def main():
+ rows = []
+ total = len(IMGS) * len(HAIRSTYLES) * len(RES_LIST) * 2
+ idx = 0
+ for ilabel, ipath in IMGS:
+ for hnum, hkey, hname in HAIRSTYLES:
+ cells = []
+ for (rlabel, rval), rtitle in zip(RES_LIST, RES_TITLES):
+ # 预热
+ idx += 1
+ print(f"[{idx}/{total}] 预热 {ilabel}|{hname}|{rtitle}", flush=True)
+ try:
+ call(ipath, hnum, rval, timeout=120)
+ except Exception:
+ pass # 预热失败(可能OOM)不中断
+ # 正式
+ idx += 1
+ save = OUT / f"{ilabel}_{hkey}_{rlabel}.jpg"
+ print(f"[{idx}/{total}] 正式 {ilabel}|{hname}|{rtitle}", flush=True)
+ r = call(ipath, hnum, rval, save_grown=save, timeout=300)
+ r["res_label"] = rlabel; r["res_title"] = rtitle
+ r["grown_path"] = str(save) if r.get("ok") else None
+ status = f"{r.get('total_ms')}ms" if r.get("ok") else f"FAIL:{r.get('error','')[:30]}"
+ print(f" -> {status}", flush=True)
+ cells.append(r)
+ rows.append({"img": ilabel, "img_path": ipath,
+ "hair_num": hnum, "hair_key": hkey, "hair_name": hname,
+ "cells": cells})
+ with open(OUT / "results.json", "w", encoding="utf-8") as f:
+ json.dump({"res_titles": RES_TITLES, "rows": rows}, f, ensure_ascii=False, indent=2)
+ ok = sum(1 for row in rows for c in row["cells"] if c.get("ok"))
+ print(f"\n✓ 完成: {ok}/{len(rows)*len(RES_LIST)} 成功 -> {OUT/'results.json'}", flush=True)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/benchmark_res_compare_report.py b/benchmark_res_compare_report.py
new file mode 100644
index 0000000..e7aaad0
--- /dev/null
+++ b/benchmark_res_compare_report.py
@@ -0,0 +1,103 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""生成分辨率对比报告:20行(4图×5发型) × 4列(原图不缩放/896/768/640)。"""
+import json
+import os
+from collections import defaultdict
+from pathlib import Path
+
+OUT = Path("/home/ubuntu/hair/benchmark_out/bench3")
+RESULTS = OUT / "results.json"
+HTML = OUT / "report.html"
+
+
+def img_src(path):
+ if not path or not os.path.isfile(path):
+ return None
+ return "bench3/" + os.path.basename(path)
+
+
+def main():
+ d = json.load(open(RESULTS, encoding="utf-8"))
+ titles = d["res_titles"]
+ rows = d["rows"]
+
+ # 各分辨率平均耗时
+ col_stats = defaultdict(lambda: {"total": [], "comfy": []})
+ for r in rows:
+ for c in r["cells"]:
+ if c.get("ok"):
+ col_stats[c["res_title"]]["total"].append(c["total_ms"])
+ col_stats[c["res_title"]]["comfy"].append(c.get("comfy_ms", 0))
+
+ # 表头
+ headers = ['
原图 | ']
+ for t in titles:
+ s = col_stats.get(t)
+ avg = sum(s["total"]) // len(s["total"]) if s and s["total"] else 0
+ headers.append(f'{t} '
+ f'均{avg/1000:.1f}s | ')
+
+ # 表体
+ body_rows = []
+ for r in rows:
+ label = f'{r["img"]}
{r["hair_name"]}
'
+ # 原图缩略图(用 orig 档的结果当原图展示,或用原图文件)
+ orig_cell = f'{label} | '
+ cells = [orig_cell]
+ for c in r["cells"]:
+ src = img_src(c.get("grown_path")) if c.get("ok") else None
+ if src:
+ t = c.get("total_ms", 0)
+ cells.append(f' '
+ f'{t/1000:.1f}s | ')
+ else:
+ cells.append(f'⚠ {c.get("error","")[:20]} | ')
+ body_rows.append(f'{"".join(cells)}
')
+
+ html = f"""
+
+
+
+
+重绘分辨率对比报告 — steps=15
+
+
+
+📊 重绘分辨率对比报告
+4图×5发型=20行 · 每行4分辨率(原图不缩放/896/768/640) · steps=15 · 热数据 · 80/80成功 · 峰值21.2GB · 0 OOM
+列标题下显示平均总耗时。横向滚动查看。原图列含图片名+发型名。每格下方为该次总耗时。
+
+
+"""
+
+ 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/bench3/asdf_ellipse_640.jpg b/static/bench3/asdf_ellipse_640.jpg
new file mode 100644
index 0000000..5627adc
Binary files /dev/null and b/static/bench3/asdf_ellipse_640.jpg differ
diff --git a/static/bench3/asdf_ellipse_768.jpg b/static/bench3/asdf_ellipse_768.jpg
new file mode 100644
index 0000000..8e2b9af
Binary files /dev/null and b/static/bench3/asdf_ellipse_768.jpg differ
diff --git a/static/bench3/asdf_ellipse_896.jpg b/static/bench3/asdf_ellipse_896.jpg
new file mode 100644
index 0000000..22b7271
Binary files /dev/null and b/static/bench3/asdf_ellipse_896.jpg differ
diff --git a/static/bench3/asdf_ellipse_orig.jpg b/static/bench3/asdf_ellipse_orig.jpg
new file mode 100644
index 0000000..5b21c61
Binary files /dev/null and b/static/bench3/asdf_ellipse_orig.jpg differ
diff --git a/static/bench3/asdf_flower_640.jpg b/static/bench3/asdf_flower_640.jpg
new file mode 100644
index 0000000..241a976
Binary files /dev/null and b/static/bench3/asdf_flower_640.jpg differ
diff --git a/static/bench3/asdf_flower_768.jpg b/static/bench3/asdf_flower_768.jpg
new file mode 100644
index 0000000..3005f01
Binary files /dev/null and b/static/bench3/asdf_flower_768.jpg differ
diff --git a/static/bench3/asdf_flower_896.jpg b/static/bench3/asdf_flower_896.jpg
new file mode 100644
index 0000000..25cecbf
Binary files /dev/null and b/static/bench3/asdf_flower_896.jpg differ
diff --git a/static/bench3/asdf_flower_orig.jpg b/static/bench3/asdf_flower_orig.jpg
new file mode 100644
index 0000000..9fd690b
Binary files /dev/null and b/static/bench3/asdf_flower_orig.jpg differ
diff --git a/static/bench3/asdf_heart_640.jpg b/static/bench3/asdf_heart_640.jpg
new file mode 100644
index 0000000..27e1b94
Binary files /dev/null and b/static/bench3/asdf_heart_640.jpg differ
diff --git a/static/bench3/asdf_heart_768.jpg b/static/bench3/asdf_heart_768.jpg
new file mode 100644
index 0000000..ea824a5
Binary files /dev/null and b/static/bench3/asdf_heart_768.jpg differ
diff --git a/static/bench3/asdf_heart_896.jpg b/static/bench3/asdf_heart_896.jpg
new file mode 100644
index 0000000..8996a10
Binary files /dev/null and b/static/bench3/asdf_heart_896.jpg differ
diff --git a/static/bench3/asdf_heart_orig.jpg b/static/bench3/asdf_heart_orig.jpg
new file mode 100644
index 0000000..7d3b72c
Binary files /dev/null and b/static/bench3/asdf_heart_orig.jpg differ
diff --git a/static/bench3/asdf_straight_640.jpg b/static/bench3/asdf_straight_640.jpg
new file mode 100644
index 0000000..cead8be
Binary files /dev/null and b/static/bench3/asdf_straight_640.jpg differ
diff --git a/static/bench3/asdf_straight_768.jpg b/static/bench3/asdf_straight_768.jpg
new file mode 100644
index 0000000..21081d3
Binary files /dev/null and b/static/bench3/asdf_straight_768.jpg differ
diff --git a/static/bench3/asdf_straight_896.jpg b/static/bench3/asdf_straight_896.jpg
new file mode 100644
index 0000000..a62fe5f
Binary files /dev/null and b/static/bench3/asdf_straight_896.jpg differ
diff --git a/static/bench3/asdf_straight_orig.jpg b/static/bench3/asdf_straight_orig.jpg
new file mode 100644
index 0000000..de22b8a
Binary files /dev/null and b/static/bench3/asdf_straight_orig.jpg differ
diff --git a/static/bench3/asdf_wave_640.jpg b/static/bench3/asdf_wave_640.jpg
new file mode 100644
index 0000000..3fc47fb
Binary files /dev/null and b/static/bench3/asdf_wave_640.jpg differ
diff --git a/static/bench3/asdf_wave_768.jpg b/static/bench3/asdf_wave_768.jpg
new file mode 100644
index 0000000..99afd1a
Binary files /dev/null and b/static/bench3/asdf_wave_768.jpg differ
diff --git a/static/bench3/asdf_wave_896.jpg b/static/bench3/asdf_wave_896.jpg
new file mode 100644
index 0000000..2d71ad7
Binary files /dev/null and b/static/bench3/asdf_wave_896.jpg differ
diff --git a/static/bench3/asdf_wave_orig.jpg b/static/bench3/asdf_wave_orig.jpg
new file mode 100644
index 0000000..e95e841
Binary files /dev/null and b/static/bench3/asdf_wave_orig.jpg differ
diff --git a/static/bench3/girl2_ellipse_640.jpg b/static/bench3/girl2_ellipse_640.jpg
new file mode 100644
index 0000000..e6e91c7
Binary files /dev/null and b/static/bench3/girl2_ellipse_640.jpg differ
diff --git a/static/bench3/girl2_ellipse_768.jpg b/static/bench3/girl2_ellipse_768.jpg
new file mode 100644
index 0000000..3a554fb
Binary files /dev/null and b/static/bench3/girl2_ellipse_768.jpg differ
diff --git a/static/bench3/girl2_ellipse_896.jpg b/static/bench3/girl2_ellipse_896.jpg
new file mode 100644
index 0000000..18445ae
Binary files /dev/null and b/static/bench3/girl2_ellipse_896.jpg differ
diff --git a/static/bench3/girl2_ellipse_orig.jpg b/static/bench3/girl2_ellipse_orig.jpg
new file mode 100644
index 0000000..6cb7399
Binary files /dev/null and b/static/bench3/girl2_ellipse_orig.jpg differ
diff --git a/static/bench3/girl2_flower_640.jpg b/static/bench3/girl2_flower_640.jpg
new file mode 100644
index 0000000..8f205ee
Binary files /dev/null and b/static/bench3/girl2_flower_640.jpg differ
diff --git a/static/bench3/girl2_flower_768.jpg b/static/bench3/girl2_flower_768.jpg
new file mode 100644
index 0000000..bef789c
Binary files /dev/null and b/static/bench3/girl2_flower_768.jpg differ
diff --git a/static/bench3/girl2_flower_896.jpg b/static/bench3/girl2_flower_896.jpg
new file mode 100644
index 0000000..614f75b
Binary files /dev/null and b/static/bench3/girl2_flower_896.jpg differ
diff --git a/static/bench3/girl2_flower_orig.jpg b/static/bench3/girl2_flower_orig.jpg
new file mode 100644
index 0000000..a177132
Binary files /dev/null and b/static/bench3/girl2_flower_orig.jpg differ
diff --git a/static/bench3/girl2_heart_640.jpg b/static/bench3/girl2_heart_640.jpg
new file mode 100644
index 0000000..b4717cb
Binary files /dev/null and b/static/bench3/girl2_heart_640.jpg differ
diff --git a/static/bench3/girl2_heart_768.jpg b/static/bench3/girl2_heart_768.jpg
new file mode 100644
index 0000000..69a040f
Binary files /dev/null and b/static/bench3/girl2_heart_768.jpg differ
diff --git a/static/bench3/girl2_heart_896.jpg b/static/bench3/girl2_heart_896.jpg
new file mode 100644
index 0000000..407cd47
Binary files /dev/null and b/static/bench3/girl2_heart_896.jpg differ
diff --git a/static/bench3/girl2_heart_orig.jpg b/static/bench3/girl2_heart_orig.jpg
new file mode 100644
index 0000000..59eb1e2
Binary files /dev/null and b/static/bench3/girl2_heart_orig.jpg differ
diff --git a/static/bench3/girl2_straight_640.jpg b/static/bench3/girl2_straight_640.jpg
new file mode 100644
index 0000000..ea7cd6a
Binary files /dev/null and b/static/bench3/girl2_straight_640.jpg differ
diff --git a/static/bench3/girl2_straight_768.jpg b/static/bench3/girl2_straight_768.jpg
new file mode 100644
index 0000000..ab680bc
Binary files /dev/null and b/static/bench3/girl2_straight_768.jpg differ
diff --git a/static/bench3/girl2_straight_896.jpg b/static/bench3/girl2_straight_896.jpg
new file mode 100644
index 0000000..8414ef5
Binary files /dev/null and b/static/bench3/girl2_straight_896.jpg differ
diff --git a/static/bench3/girl2_straight_orig.jpg b/static/bench3/girl2_straight_orig.jpg
new file mode 100644
index 0000000..2d2c430
Binary files /dev/null and b/static/bench3/girl2_straight_orig.jpg differ
diff --git a/static/bench3/girl2_wave_640.jpg b/static/bench3/girl2_wave_640.jpg
new file mode 100644
index 0000000..3289d7a
Binary files /dev/null and b/static/bench3/girl2_wave_640.jpg differ
diff --git a/static/bench3/girl2_wave_768.jpg b/static/bench3/girl2_wave_768.jpg
new file mode 100644
index 0000000..77ad15e
Binary files /dev/null and b/static/bench3/girl2_wave_768.jpg differ
diff --git a/static/bench3/girl2_wave_896.jpg b/static/bench3/girl2_wave_896.jpg
new file mode 100644
index 0000000..14e3d3f
Binary files /dev/null and b/static/bench3/girl2_wave_896.jpg differ
diff --git a/static/bench3/girl2_wave_orig.jpg b/static/bench3/girl2_wave_orig.jpg
new file mode 100644
index 0000000..d3f65fd
Binary files /dev/null and b/static/bench3/girl2_wave_orig.jpg differ
diff --git a/static/bench3/girl5_ellipse_640.jpg b/static/bench3/girl5_ellipse_640.jpg
new file mode 100644
index 0000000..acc9d42
Binary files /dev/null and b/static/bench3/girl5_ellipse_640.jpg differ
diff --git a/static/bench3/girl5_ellipse_768.jpg b/static/bench3/girl5_ellipse_768.jpg
new file mode 100644
index 0000000..c96dd7e
Binary files /dev/null and b/static/bench3/girl5_ellipse_768.jpg differ
diff --git a/static/bench3/girl5_ellipse_896.jpg b/static/bench3/girl5_ellipse_896.jpg
new file mode 100644
index 0000000..a6b4988
Binary files /dev/null and b/static/bench3/girl5_ellipse_896.jpg differ
diff --git a/static/bench3/girl5_ellipse_orig.jpg b/static/bench3/girl5_ellipse_orig.jpg
new file mode 100644
index 0000000..bda2b0a
Binary files /dev/null and b/static/bench3/girl5_ellipse_orig.jpg differ
diff --git a/static/bench3/girl5_flower_640.jpg b/static/bench3/girl5_flower_640.jpg
new file mode 100644
index 0000000..dc1008c
Binary files /dev/null and b/static/bench3/girl5_flower_640.jpg differ
diff --git a/static/bench3/girl5_flower_768.jpg b/static/bench3/girl5_flower_768.jpg
new file mode 100644
index 0000000..e6e3b8d
Binary files /dev/null and b/static/bench3/girl5_flower_768.jpg differ
diff --git a/static/bench3/girl5_flower_896.jpg b/static/bench3/girl5_flower_896.jpg
new file mode 100644
index 0000000..d491853
Binary files /dev/null and b/static/bench3/girl5_flower_896.jpg differ
diff --git a/static/bench3/girl5_flower_orig.jpg b/static/bench3/girl5_flower_orig.jpg
new file mode 100644
index 0000000..7501316
Binary files /dev/null and b/static/bench3/girl5_flower_orig.jpg differ
diff --git a/static/bench3/girl5_heart_640.jpg b/static/bench3/girl5_heart_640.jpg
new file mode 100644
index 0000000..efa2167
Binary files /dev/null and b/static/bench3/girl5_heart_640.jpg differ
diff --git a/static/bench3/girl5_heart_768.jpg b/static/bench3/girl5_heart_768.jpg
new file mode 100644
index 0000000..184c69c
Binary files /dev/null and b/static/bench3/girl5_heart_768.jpg differ
diff --git a/static/bench3/girl5_heart_896.jpg b/static/bench3/girl5_heart_896.jpg
new file mode 100644
index 0000000..e4d8de3
Binary files /dev/null and b/static/bench3/girl5_heart_896.jpg differ
diff --git a/static/bench3/girl5_heart_orig.jpg b/static/bench3/girl5_heart_orig.jpg
new file mode 100644
index 0000000..607d7ae
Binary files /dev/null and b/static/bench3/girl5_heart_orig.jpg differ
diff --git a/static/bench3/girl5_straight_640.jpg b/static/bench3/girl5_straight_640.jpg
new file mode 100644
index 0000000..0b6a8b5
Binary files /dev/null and b/static/bench3/girl5_straight_640.jpg differ
diff --git a/static/bench3/girl5_straight_768.jpg b/static/bench3/girl5_straight_768.jpg
new file mode 100644
index 0000000..203769a
Binary files /dev/null and b/static/bench3/girl5_straight_768.jpg differ
diff --git a/static/bench3/girl5_straight_896.jpg b/static/bench3/girl5_straight_896.jpg
new file mode 100644
index 0000000..c7442d1
Binary files /dev/null and b/static/bench3/girl5_straight_896.jpg differ
diff --git a/static/bench3/girl5_straight_orig.jpg b/static/bench3/girl5_straight_orig.jpg
new file mode 100644
index 0000000..7c0377e
Binary files /dev/null and b/static/bench3/girl5_straight_orig.jpg differ
diff --git a/static/bench3/girl5_wave_640.jpg b/static/bench3/girl5_wave_640.jpg
new file mode 100644
index 0000000..1dcd592
Binary files /dev/null and b/static/bench3/girl5_wave_640.jpg differ
diff --git a/static/bench3/girl5_wave_768.jpg b/static/bench3/girl5_wave_768.jpg
new file mode 100644
index 0000000..f551f4e
Binary files /dev/null and b/static/bench3/girl5_wave_768.jpg differ
diff --git a/static/bench3/girl5_wave_896.jpg b/static/bench3/girl5_wave_896.jpg
new file mode 100644
index 0000000..5f441e9
Binary files /dev/null and b/static/bench3/girl5_wave_896.jpg differ
diff --git a/static/bench3/girl5_wave_orig.jpg b/static/bench3/girl5_wave_orig.jpg
new file mode 100644
index 0000000..1066203
Binary files /dev/null and b/static/bench3/girl5_wave_orig.jpg differ
diff --git a/static/bench3/qwer_ellipse_640.jpg b/static/bench3/qwer_ellipse_640.jpg
new file mode 100644
index 0000000..e64f9f5
Binary files /dev/null and b/static/bench3/qwer_ellipse_640.jpg differ
diff --git a/static/bench3/qwer_ellipse_768.jpg b/static/bench3/qwer_ellipse_768.jpg
new file mode 100644
index 0000000..4873f08
Binary files /dev/null and b/static/bench3/qwer_ellipse_768.jpg differ
diff --git a/static/bench3/qwer_ellipse_896.jpg b/static/bench3/qwer_ellipse_896.jpg
new file mode 100644
index 0000000..2d56c9f
Binary files /dev/null and b/static/bench3/qwer_ellipse_896.jpg differ
diff --git a/static/bench3/qwer_ellipse_orig.jpg b/static/bench3/qwer_ellipse_orig.jpg
new file mode 100644
index 0000000..ff3f7e6
Binary files /dev/null and b/static/bench3/qwer_ellipse_orig.jpg differ
diff --git a/static/bench3/qwer_flower_640.jpg b/static/bench3/qwer_flower_640.jpg
new file mode 100644
index 0000000..0987d19
Binary files /dev/null and b/static/bench3/qwer_flower_640.jpg differ
diff --git a/static/bench3/qwer_flower_768.jpg b/static/bench3/qwer_flower_768.jpg
new file mode 100644
index 0000000..3b625d4
Binary files /dev/null and b/static/bench3/qwer_flower_768.jpg differ
diff --git a/static/bench3/qwer_flower_896.jpg b/static/bench3/qwer_flower_896.jpg
new file mode 100644
index 0000000..c86539a
Binary files /dev/null and b/static/bench3/qwer_flower_896.jpg differ
diff --git a/static/bench3/qwer_flower_orig.jpg b/static/bench3/qwer_flower_orig.jpg
new file mode 100644
index 0000000..cb7d016
Binary files /dev/null and b/static/bench3/qwer_flower_orig.jpg differ
diff --git a/static/bench3/qwer_heart_640.jpg b/static/bench3/qwer_heart_640.jpg
new file mode 100644
index 0000000..e106376
Binary files /dev/null and b/static/bench3/qwer_heart_640.jpg differ
diff --git a/static/bench3/qwer_heart_768.jpg b/static/bench3/qwer_heart_768.jpg
new file mode 100644
index 0000000..e44b104
Binary files /dev/null and b/static/bench3/qwer_heart_768.jpg differ
diff --git a/static/bench3/qwer_heart_896.jpg b/static/bench3/qwer_heart_896.jpg
new file mode 100644
index 0000000..48749f8
Binary files /dev/null and b/static/bench3/qwer_heart_896.jpg differ
diff --git a/static/bench3/qwer_heart_orig.jpg b/static/bench3/qwer_heart_orig.jpg
new file mode 100644
index 0000000..046311d
Binary files /dev/null and b/static/bench3/qwer_heart_orig.jpg differ
diff --git a/static/bench3/qwer_straight_640.jpg b/static/bench3/qwer_straight_640.jpg
new file mode 100644
index 0000000..daf7250
Binary files /dev/null and b/static/bench3/qwer_straight_640.jpg differ
diff --git a/static/bench3/qwer_straight_768.jpg b/static/bench3/qwer_straight_768.jpg
new file mode 100644
index 0000000..b8d807b
Binary files /dev/null and b/static/bench3/qwer_straight_768.jpg differ
diff --git a/static/bench3/qwer_straight_896.jpg b/static/bench3/qwer_straight_896.jpg
new file mode 100644
index 0000000..5c1f24c
Binary files /dev/null and b/static/bench3/qwer_straight_896.jpg differ
diff --git a/static/bench3/qwer_straight_orig.jpg b/static/bench3/qwer_straight_orig.jpg
new file mode 100644
index 0000000..faa3f06
Binary files /dev/null and b/static/bench3/qwer_straight_orig.jpg differ
diff --git a/static/bench3/qwer_wave_640.jpg b/static/bench3/qwer_wave_640.jpg
new file mode 100644
index 0000000..1c9983b
Binary files /dev/null and b/static/bench3/qwer_wave_640.jpg differ
diff --git a/static/bench3/qwer_wave_768.jpg b/static/bench3/qwer_wave_768.jpg
new file mode 100644
index 0000000..9350575
Binary files /dev/null and b/static/bench3/qwer_wave_768.jpg differ
diff --git a/static/bench3/qwer_wave_896.jpg b/static/bench3/qwer_wave_896.jpg
new file mode 100644
index 0000000..80f1558
Binary files /dev/null and b/static/bench3/qwer_wave_896.jpg differ
diff --git a/static/bench3/qwer_wave_orig.jpg b/static/bench3/qwer_wave_orig.jpg
new file mode 100644
index 0000000..6c5c50d
Binary files /dev/null and b/static/bench3/qwer_wave_orig.jpg differ
diff --git a/static/bench3_report.html b/static/bench3_report.html
new file mode 100644
index 0000000..a0ecd8b
--- /dev/null
+++ b/static/bench3_report.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+重绘分辨率对比报告 — steps=15
+
+
+
+📊 重绘分辨率对比报告
+4图×5发型=20行 · 每行4分辨率(原图不缩放/896/768/640) · steps=15 · 热数据 · 80/80成功 · 峰值21.2GB · 0 OOM
+列标题下显示平均总耗时。横向滚动查看。原图列含图片名+发型名。每格下方为该次总耗时。
+
+
+
\ No newline at end of file