Skip to content

perf: reduce XDB result mapping allocations - #42

Merged
yourtion merged 1 commit into
mainfrom
perf/xdb-result-mapping
Oct 25, 2026
Merged

yourtion merged 1 commit into
mainfrom
perf/xdb-result-mapping

Conversation

@yourtion

Copy link
Copy Markdown
Owner

XDB 每次命中后,标准结果映射会创建条件展开的临时对象和回调;raw 查询也会经过不需要的字段处理。现在在 adapter 内直接构建标准结果,并让 raw 模式直接返回。公共 API、列校验、缺失值规则、自定义列和结果对象独立性保持不变。

  • 将 placeholder helper 移出查询,字段映射使用直接循环;不引入结果缓存。
  • 补充共享回归:未知标记与 Reserved、国家名/代码单独出现、重排列与额外字段、嵌套结果修改隔离、列数不足/过多。
  • 完整基准与 Bun 预热敏感性复测保存在 docs/benchmarks/,方法与限制见 docs/performance.md。

标准查询吞吐中位数,相对已合入 IP 解析优化的 main 4e5c346:

运行时 IPv4 IPv6
Node 24.19.0 +37.6% +12.3%
Bun 1.4.4 +54.4% +9.9%
Deno 2.9.6 +21.6% +13.8%

同一 AMD EPYC Linux x64 主机、固定数据与 4,096 地址集,20,000 次预热、500,000 次吞吐查询、每组 5 个独立进程;120 个 worker 均校验全部记录及计时 checksum。不能直接与上一轮不同主机的绝对数值比较。

性能取舍:初始矩阵中 Bun 标准查询 p99 上升(IPv4 3.415→6.991 µs,IPv6 12.368→15.523 µs),尽管 p50/p95 和吞吐改善。额外 24 个同查询集 worker 显示预热敏感性;200,000 次预热后 p99 改善,但不证明 JIT/GC 原因,也不构成生产延迟保证。raw IPv6 在 Bun 基本持平,Deno 中位数 -4.3%,运行范围重叠。两份原始报告均保留,不主张所有指标都改善。

验证:75 项核心/独立参考/发布工具测试通过;Node 24.19.0、Bun 1.4.4、Deno 2.9.6 真实 tarball 消费验证通过,包含公开示例、ESM/CJS、声明、权限和数据哈希。oxlint、oxfmt、TypeScript 与 git diff --check 通过;基准源码/编译产物哈希与最终代码一致。

@yourtion
yourtion marked this pull request as ready for review October 25, 2026 04:49
@yourtion
yourtion merged commit 26596a9 into main Oct 25, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant