From 78e8f798e843d3f9cde67382f020e708d8b81f2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B4=AE=E7=94=9F=EF=BC=88=E5=AD=90=E8=99=9A=EF=BC=89?= <2234839456@qq.com> Date: Fri, 24 Jul 2026 08:42:36 +0800 Subject: [PATCH] =?UTF-8?q?perf(woff2):=20Brotli=20=E8=B4=A8=E9=87=8F=20q3?= =?UTF-8?q?=E2=86=92q2=EF=BC=8C=E5=86=8D=E7=9C=81=208%=20=E6=97=B6?= =?UTF-8?q?=E9=97=B4=EF=BC=8C=E4=BD=93=E7=A7=AF=E4=BB=85=20+0.09%?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 实测千字文 woff2 各 quality 端到端时间 + 体积(同文本): q3=4.65ms/42712B q2=4.26ms/42752B q1=4.21ms/46432B q0=4.12ms/47240B q2 是时间/体积最优拐点:比 q3 再省 8% 时间,体积仅 +40 字节(+0.09%)。 q1/q0 体积陡增 +8.7%/+10.6%(下载/解析代价),不划算。 基准测试全部 SSIM 与 ink 计数一致(FiraCode 0.9923、初夏明朝纯标点 0.9920)。 Co-Authored-By: Claude Opus 4.8 (1M context) --- vendor/fonteditor-core/woff2/woff2-encode.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/vendor/fonteditor-core/woff2/woff2-encode.js b/vendor/fonteditor-core/woff2/woff2-encode.js index 44b8f2b..170d304 100644 --- a/vendor/fonteditor-core/woff2/woff2-encode.js +++ b/vendor/fonteditor-core/woff2/woff2-encode.js @@ -20,19 +20,19 @@ const BROTLI_PARAM_QUALITY = zlib.constants?.BROTLI_PARAM_QUALITY ?? 3; const BROTLI_PARAM_SIZE_HINT = zlib.constants?.BROTLI_PARAM_SIZE_HINT ?? 4; /** - * Brotli 压缩参数:quality 3 + * Brotli 压缩参数:quality 2 * WOFF2 是无损容器,Brotli 质量只影响压缩率不影响解码结果——SSIM 必然不变。 - * 实测在 glyf 变换数据(~85KB)上各 quality: - * q6=3.66ms/45935B(54.0%) q3=1.20ms/46168B(54.3%) q0=0.49ms/51136B(60.1%) - * q6→q3:时间 -67%,体积 +0.5%(持平)。q3 是时间/体积最优点(再降体积显著增大)。 - * 千字文 brotli 占总耗时 37%,此改动约省 25% 端到端时间。 + * 实测千字文 woff2 端到端 + 体积(同文本): + * q6=6.31ms/42712B q3=4.65ms/42712B q2=4.26ms/42752B q1=4.21ms/46432B q0=4.12ms/47240B + * q2 是时间/体积最优拐点:比 q3 再省 8% 时间,体积仅 +0.09%(40 字节)。 + * q1/q0 体积陡增 +8.7%/+10.6%(下载/解析代价),不值。 */ const BROTLI_OPTIONS_BASE = { - params: { [BROTLI_PARAM_QUALITY]: 3 }, + params: { [BROTLI_PARAM_QUALITY]: 2 }, }; /** 优化: 预分配 options 模板,避免每次 encode 创建 computed property name 对象 */ const BROTLI_OPTIONS_WITH_HINT = { - params: { [BROTLI_PARAM_QUALITY]: 3, [BROTLI_PARAM_SIZE_HINT]: 0 }, + params: { [BROTLI_PARAM_QUALITY]: 2, [BROTLI_PARAM_SIZE_HINT]: 0 }, }; /* ======== 大端序读写工具函数(模块级,消除闭包分配) ======== */