XPerf
语言Java证据

jp-异常控制流

主张

使用异常来处理预期的解析失败比进行数字检查要慢得多(并且会分配异常对象)。

如何测量

  • 来源:J32_RuleEvidenceBatch.jsonl
  • JDK 27 (27+35),JVM 参数 -XX:+UseCompactObjectHeaders
  • 之前: tryParse_n2000
  • 之后: digitCheck_n2000

运行时(本证据文件)

FieldValue
时间2026-10-23 亚洲/上海
before230074.011 ns_per_op, 342403.663 B/op
after58066.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。不要随意编造比率。语料残差 ≠ 加速比。