jp-异常控制流
主张
使用异常来处理预期的解析失败比进行数字检查要慢得多(并且会分配异常对象)。
如何测量
- 来源:
J32_RuleEvidenceBatch.jsonl - JDK 27 (27+35),JVM 参数
-XX:+UseCompactObjectHeaders - 之前:
tryParse_n2000 - 之后:
digitCheck_n2000
运行时(本证据文件)
| Field | Value |
|---|---|
| 时间 | 2026-10-23 亚洲/上海 |
| before | 230074.011 ns_per_op, 342403.663 B/op |
| after | 58066.417 ns_per_op, 0.862 B/op |
| 前/后比例 | ~3.96× |
Lint 映射 / 策略
在 JDK 27 平均值上测得约 ~3.96×。两个带有基数检查的样本被加入,因此这个平均值比稳定的 ~4 µs 样本更低。
在一个空闲主机上(Temurin 21.0.13,负载 0.16)进行的后续方向检查不能替代这个 JSONL。依然是相同的 2000 个字符串,每第五个为 nope,重复 80 次,预热 5 次,中位数 9:尝试/解析 14.509 毫秒,数字检查 0.535 毫秒,约 27 倍。双方都很紧。JDK 27 的 ~4 倍平均值是高峰。默认严重性保持 关闭。
限制
在这台机器上进行微基准测试;请参见 scripts/run-static-vs-hotspot.sh。不要随意编造比率。语料残差 ≠ 加速比。