语言JavaScript证据
jp-clock-hot — 测量过的,仍有暗示
状态
提示。实时时钟 JSONL:jp-clock-hot.jsonl。未进行语料库分类。2026-10-22 的语料库裁决不涵盖此标识。
测量
Date.now 和 performance.now,每个都与循环外的一个样本进行比较。new Date 不适用此规则。
节点 v26.12.1,V8 14.6.202.34-node.40,linux x64,负载 0.61。预热 3,9 的中位数。测试工具:examples/bench/evidence_jp_clock.js。之前的 Node 24 对大约是 26× / 19×。
| 角色 | 情况 | 中位数毫秒 | 操作次数 | 比率 |
|---|---|---|---|---|
| 之后 | date_now_once | 0.043 | 100000 | 1 |
| 之前 | date_now_each | 2.982 | 100000 | 69.712 |
| 之后 | perf_now_once | 0.027 | 100000 | 1 |
| 之前 | perf_now_each | 2.980 | 100000 | 110.209 |
date_now_once 在两个样本较慢(0.297 毫秒、0.125 毫秒)之后,其余样本稳定在 0.029–0.051 毫秒。中位数位于该集群中。相对于最慢的样本,两边仍然约有 10 倍的差距。performance.now 的样本非常集中。采样一次后不会在循环内部读取时钟。需要每次循环获取新时间戳的代码无法提升。默认保持 hint。这个比率并不是通用的加速。
匹配器
上面的比率是一个不等待的紧循环。包含 await 的循环和 for await 循环不会被报告。默认的 --scope all 也会报告循环外的时钟样本,当每次调用不需要新的时间时;--scope loop 则保持前者仅在循环内匹配。速率限制或必须在每次迭代中读取时钟的工作线程没有任何可移动的内容。
解除阻塞
不要仅仅从这个文件中将默认设置为 error。变化的输入、冷路径或另一个 ABI 都可能抹去差异。在进行任何默认更改之前,仍然需要语料库分流。