Skip to content

基准压测报告 (Benchmark Report) ​

Path-IoC 致力于在大型微模块工程与 Serverless 边缘计算中提供极限性能。

以下为基于硬件基准平台执行的实测数据(压测脚本位于 @path-ioc/benchmarks)。


测试环境 ​

  • CPU: Apple M5 (arm64-darwin)
  • Runtime: Node.js v24.3.0
  • 测试工具: Mitata / High-Precision Performance Benchmark
  • 测试样本: 真实全连接有向无环图(含交叉依赖、短名称查找与循环依赖深搜探测)

实测指标矩阵 ​

压测函数 (Benchmark Target)规模 (Nodes)平均单次耗时 (Avg)p75 分位p99 分位吞吐等效 QPS
instantiateModuleContainer50 节点7.6 µs7.6 µs9.5 µs~131,000 /s
instantiateModuleContainer500 节点87.1 µs86.8 µs111 µs~11,500 /s
instantiateModuleContainer2000 节点428 µs425 µs822 µs~2,330 /s
compileModuleGraph50 节点24.2 µs24.0 µs33.6 µs~41,000 /s
compileModuleGraph500 节点496 µs503 µs591 µs进程冷启动单次
compileModuleGraph2000 节点4.76 ms4.71 ms9.00 ms工业级深层拓扑极限

性能关键分析 ​

1. 为什么 50 节点实例化能达到 7.6 微秒? ​

  • 零反射、零元数据查表:没有像 Java Spring 或 InversifyJS 那样在每个对象生成时都要通过 Reflect.getMetadata 翻找注解缓存;
  • 纯粹的闭包函数调用:拓扑图预编译后已排好扁平的执行流水线(Pipeline),运行时仅为简单的循环数组迭代和属性挂载,Vite / V8 引擎能做到 100% 函数内联(JIT Inlining)。

2. 为什么不采用 WebAssembly (WASM)? ​

经过深度实验,跨 WASM FFI(外部函数接口)调用 JS 对象需要维护引用句柄映射与内存序列化,单次通信开销在 1~2 毫秒左右。而 Path-IoC 原生纯 JavaScript 实例化仅需 7.6 微秒 (0.0076ms)。在以 JS 对象图为主的场景下,纯 JS 比 WASM 快近 200 倍。

Released under the MIT License.