Skip to content

Commit 5729fee

Browse files
Refactor code structure for improved readability and maintainability
1 parent 972ff5d commit 5729fee

29 files changed

Lines changed: 4 additions & 3 deletions

_posts/2026-04-25-av-perf-test-zh-cn.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ date: 2026-04-25 18:00:00 -0500
44
categories: [Research]
55
tags: [antivirus, edr, endpoint security, performance, antimalware]
66
description: 用编译工作负载和 API 级微基准量化 16 款杀软的性能开销。
7+
math: true
78
mermaid: true
8-
media_subpath: /assets/img/2026-04-26-av-perf-test-zh-cn
9+
media_subpath: /assets/img/2026-04-25-av-perf-test-zh-cn
910
---
1011

1112
在安全产品的性能评测报告中,目前最为广泛采用的是 [AV-Comparatives](https://www.av-comparatives.org/)[AV-TEST](https://www.av-test.org/)。它们在标准硬件上执行文件复制、压缩解压、应用安装启动、网页浏览等日常操作,区分首次与后续运行,取多次测试的中位数,并在每次测试前还原系统镜像。AV-Comparatives 还引入了 UL Procyon 办公基准套件作为第三方参照。这套体系主要面向消费者场景,衡量的是"安装杀软后日常操作的放缓程度",其结论直观且具有显著的参考价值。
@@ -255,7 +256,7 @@ COM 实例创建测试通过 .NET `Activator.CreateInstance` 和 `Marshal.FinalR
255256

256257
### 热力图
257258

258-
热力图将 16 款杀软 × 22 个场景的平均耗时增幅铺在一张表中,每个格子显示实际增幅百分比,颜色按该列(场景)内所有产品的数据进行对数归一化后映射到七个等级:本项最低、很低、低、中等、高、很高、本项最高。之所以选择对数而非线性归一化,是因为许多场景的产品间增幅跨越了数个数量级(如文件写入 PE 内容从 1% 到 31,552%),线性映射会导致大部分产品挤在同一色段中失去区分度。对数映射公式为 $\text{score} = \frac{\ln(1 + v - v_{\min})}{\ln(1 + v_{\max} - v_{\min})} \times 100$,然后将 0–100 的分数等分为 7 个等级。颜色归一化是按列独立进行的——同一颜色在不同列中代表不同的绝对增幅,这确保了每个场景内部的相对排名都能被清晰呈现。编译工作负载列采用全量构建 25%、增量构建 75% 的加权均值(日常开发以增量构建为主);新 EXE 运行序列取无 MOTW 与有 MOTW 两轮中的较大值(反映最坏情况);扩展名敏感度取 `.exe`、`.dll`、`.js`、`.ps1` 四种扩展名的平均值。
259+
热力图将 16 款杀软 × 22 个场景的平均耗时增幅铺在一张表中,每个格子显示实际增幅百分比,颜色按该列(场景)内所有产品的数据进行对数归一化后映射到七个等级:本项最低、很低、低、中等、高、很高、本项最高。之所以选择对数而非线性归一化,是因为许多场景的产品间增幅跨越了数个数量级(如文件写入 PE 内容从 1% 到 31,552%),线性映射会导致大部分产品挤在同一色段中失去区分度。对数映射公式为 $$ \text{score} = \frac{\ln(1 + v - v_{\min})}{\ln(1 + v_{\max} - v_{\min})} \times 100 $$,然后将 0–100 的分数等分为 7 个等级。颜色归一化是按列独立进行的——同一颜色在不同列中代表不同的绝对增幅,这确保了每个场景内部的相对排名都能被清晰呈现。编译工作负载列采用全量构建 25%、增量构建 75% 的加权均值(日常开发以增量构建为主);新 EXE 运行序列取无 MOTW 与有 MOTW 两轮中的较大值(反映最坏情况);扩展名敏感度取 `.exe`、`.dll`、`.js`、`.ps1` 四种扩展名的平均值。
259260

260261
![杀毒软件性能影响热力图](av-workload-impact-heatmap.png)
261262

@@ -267,7 +268,7 @@ COM 实例创建测试通过 .NET `Activator.CreateInstance` 和 `Marshal.FinalR
267268

268269
热力图提供了逐场景的详细视图,但读者仍然需要一个单一数字来排序。综合评分的设计目标是:**单项严重变慢的产品应当受到比多项轻微变慢更重的惩罚**——这与用户体验的直觉一致:一个场景慢 10 倍比十个场景各慢 10% 的影响更为显著。
269270

270-
为实现这一目标,评分采用了指数惩罚机制:将每款产品在每个场景中的热力图等级(0–6)转换为 $2^{\text{level}}$ 的惩罚分——本项最低=1,很低=2,低=4,中等=8,高=16,很高=32,本项最高=64。这意味着从"低"到"高"的跳跃(4→16)比从"本项最低"到"低"的跳跃(1→4)在评分中的权重大得多。最终分数为所有场景惩罚分的均值乘以场景总数(22),若某款产品在部分场景中缺少数据(如测试失败),则按已有数据的均值估算缺失项,避免因数据缺失而获得虚假低分。
271+
为实现这一目标,评分采用了指数惩罚机制:将每款产品在每个场景中的热力图等级(0–6)转换为 $$ 2^{\text{level}} $$ 的惩罚分——本项最低=1,很低=2,低=4,中等=8,高=16,很高=32,本项最高=64。这意味着从"低"到"高"的跳跃(4→16)比从"本项最低"到"低"的跳跃(1→4)在评分中的权重大得多。最终分数为所有场景惩罚分的均值乘以场景总数(22),若某款产品在部分场景中缺少数据(如测试失败),则按已有数据的均值估算缺失项,避免因数据缺失而获得虚假低分。
271272

272273
$$\text{总分} = \frac{\sum_{c \in \text{可用场景}} 2^{\text{level}_c}}{|\text{可用场景}|} \times 22$$
273274

assets/img/2026-04-26-av-perf-test-zh-cn/archive-extract-average-impact.png renamed to assets/img/2026-04-25-av-perf-test-zh-cn/archive-extract-average-impact.png

File renamed without changes.

assets/img/2026-04-26-av-perf-test-zh-cn/av-workload-impact-heatmap.png renamed to assets/img/2026-04-25-av-perf-test-zh-cn/av-workload-impact-heatmap.png

File renamed without changes.

assets/img/2026-04-26-av-perf-test-zh-cn/com-create-instance-average-impact.png renamed to assets/img/2026-04-25-av-perf-test-zh-cn/com-create-instance-average-impact.png

File renamed without changes.

assets/img/2026-04-26-av-perf-test-zh-cn/crypto-hash-verify-average-impact.png renamed to assets/img/2026-04-25-av-perf-test-zh-cn/crypto-hash-verify-average-impact.png

File renamed without changes.

assets/img/2026-04-26-av-perf-test-zh-cn/dll-load-unique-average-impact.png renamed to assets/img/2026-04-25-av-perf-test-zh-cn/dll-load-unique-average-impact.png

File renamed without changes.

assets/img/2026-04-26-av-perf-test-zh-cn/extension-sensitivity-average-impact.png renamed to assets/img/2026-04-25-av-perf-test-zh-cn/extension-sensitivity-average-impact.png

File renamed without changes.

assets/img/2026-04-26-av-perf-test-zh-cn/file-create-delete-average-impact.png renamed to assets/img/2026-04-25-av-perf-test-zh-cn/file-create-delete-average-impact.png

File renamed without changes.

assets/img/2026-04-26-av-perf-test-zh-cn/file-enum-large-dir-average-impact.png renamed to assets/img/2026-04-25-av-perf-test-zh-cn/file-enum-large-dir-average-impact.png

File renamed without changes.

assets/img/2026-04-26-av-perf-test-zh-cn/file-write-content-average-impact.png renamed to assets/img/2026-04-25-av-perf-test-zh-cn/file-write-content-average-impact.png

File renamed without changes.

0 commit comments

Comments
 (0)