可用performance api精确测量脱敏或加密函数实际开销:①用performance.now()测单次耗时,精度达微秒级;②用mark/measure拆解多阶段性能;③用performanceobserver持续监控高频调用;④需考虑数据规模、浏览器差异和主线程竞争等真实变量。

可以直接用 Performance API 精确测量脱敏或加密函数在浏览器中的实际开销,不依赖模拟或估算。关键在于用高分辨率时间戳捕获真实执行耗时,并排除环境干扰。
用 performance.now() 测单次执行耗时
这是最直接的方式,适合快速验证某个脱敏方法(如手机号掩码、AES加密)的基础成本:
- 调用 performance.now() 获取起始时间戳,执行脱敏逻辑,再取一次时间戳,差值即为毫秒级(甚至微秒级)耗时
- 比 Date.now() 更可靠:不受系统时钟跳变影响,精度达千分之一毫秒
- 示例中对 10 万条手机号做掩码(
"138****1234"),实测通常在 1–5ms 内;而前端 AES-GCM 加密一段 JSON 可能达 10–50ms,差异一目了然
用 mark/measure 做多阶段结构化分析
当脱敏流程包含预处理、核心算法、后处理(如 Base64 编码、格式校验)时,mark/measure 能清晰拆解瓶颈:
- 在每个逻辑段前后调用 performance.mark("preprocess-start") 和 performance.mark("preprocess-end")
- 用 performance.measure("preprocess", "preprocess-start", "preprocess-end") 自动计算并注册该阶段耗时
- 所有 measure 数据可通过 performance.getEntriesByType("measure") 提取,便于批量上报或 DevTools 中可视化查看
结合 PerformanceObserver 持续监控高频调用
若脱敏操作嵌入用户交互流(如实时输入框脱敏、表单提交前加密),需观察真实使用场景下的稳定性:
- 创建 PerformanceObserver 监听
"measure"或自定义"mark"类型,自动捕获每次调用的性能条目 - 可设置阈值(如 >20ms 触发告警),识别偶发性卡顿(例如首次 Web Crypto 初始化延迟)
- 配合上下文记录(如数据长度、算法模式、是否首次调用),能区分是算法本身慢,还是密钥生成/上下文初始化拖慢了首帧
注意真实环境变量的影响
客户端执行负担不是固定值,需关注几个易被忽略的变量:
- 数据规模:对 1KB 和 1MB JSON 做相同 AES 加密,耗时可能差 10 倍以上;建议按典型业务数据量阶梯测试
- 浏览器差异:Web Crypto API 在 Safari 中某些算法(如 RSA-OAEP)明显慢于 Chrome;需在目标浏览器中实测
- 主线程竞争:脱敏若在 scroll 或 input 事件中同步执行,可能被其他 JS 或渲染任务阻塞;可改用 queueMicrotask 或 setTimeout(..., 0) 观察排队延迟
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










