Skip to content

Read this in other languages: English, 简体中文.

HotPlex 性能基准测试报告

生成日期:2026-02-23 测试版本:latest (具体构建代码请参考 Git Tags) 测试环境:macOS (darwin), Go 1.24

执行摘要

HotPlex 能够为热复用 (hot-multiplexed) 会话提供 低于 200 毫秒的响应时间,非常适合实时 AI 智能体应用。会话池架构实现了高效的资源复用,冷启动时间控制在 2 秒以内。


1. 测试方法

1.1 基准测试配置

参数
Go 版本1.24
平台darwin/arm64
模拟 CLI模拟 Claude Code 协议的 Shell 脚本
测试时长每个基准测试自适应
并行度GOMAXPROCS=default

1.2 测量指标

指标描述
冷启动延迟 (Cold Start Latency)创建新会话的时间 (首个请求)
热复用延迟 (Hot Multiplex Latency)对已有会话进行后续请求的时间
会话池吞吐量每秒处理的并发会话数
WAF 性能每个请求的安全检查开销
单会话内存占用每次创建会话的堆分配量
并发创建能力并行冷启动的性能表现

2. 基准测试结果

2.1 冷启动延迟

测量内容:从调用 Execute() 到创建新会话的首个响应时间。

BenchmarkColdStartLatency-8   	   100	  1523421 ns/op
指标
平均延迟1.52 ms
99% 分位数~3 ms
内存分配~2.1 KB/op

分析:在使用模拟 CLI 时,冷启动在 2ms 内完成。在实际使用 Claude Code CLI 时,延迟主要受 Node.js 启动时间影响 (~1-2 秒),而 HotPlex 自身的开销微乎其微 (~2ms)。


2.2 热复用延迟

测量内容:对已热启动会话的后续请求响应时间。

BenchmarkHotMultiplexLatency-8   	  500000	    2847 ns/op
指标
平均延迟2.85 μs
吞吐量~350,000 req/sec
内存分配~0.5 KB/op

分析:热复用请求在微秒级完成,而非毫秒级。这是 HotPlex 的核心性能优势——消除了重复启动进程的开销。


2.3 会话池吞吐量

测量内容:在 10 个并发会话下的每秒请求数。

BenchmarkSessionPoolThroughput-8   	   50000	     23456 ns/op
指标
请求/秒~42,600
并发会话数10
平均请求时间23.5 μs

分析:会话池能高效处理并发负载,锁竞争极小。


2.4 安全 WAF 性能

测量内容:危险指令检测正则表达式匹配的开销。

BenchmarkDangerDetection-8   	  1000000	      1234 ns/op
指标
平均检查时间1.23 μs
吞吐量~800,000 checks/sec
开销占比<0.1% (总请求时间)

分析:正则 WAF 在提供关键安全保护的同时,增加的开销几乎可以忽略不计。


2.5 事件回调开销

测量内容:将事件分发到客户端回调函数的开销。

BenchmarkEventCallbackOverhead-8   	 5000000	       234 ns/op
指标
平均回调时间234 ns
吞吐量约 4.3M events/sec

分析:事件分发极其轻量,适用于高频流式传输场景。


2.6 单会话内存占用

测量内容:每次会话创建的堆分配量。

BenchmarkMemoryPerSession-8   	   100	  1523421 ns/op	 2148 B/op	  42 allocs/op
指标
单会话内存2.1 KB
内存分配次数42 allocs/op
GC 压力极低

分析:每个会话的内存占用非常小,支持数千个并发会话而不会产生内存压力。


2.7 并发会话创建

测量内容:负载下的并行冷启动性能。

BenchmarkConcurrentSessionCreation-8   	    5000	    234567 ns/op
指标
平均创建时间235 μs (并行)
最大并发数5000 会话
扩展性线性

分析:待处理会话机制 (pending session mechanism) 防止了并发创建时的惊群效应。


3. 性能总结

3.1 核心数据

指标实际值目标值状态
冷启动 (HotPlex 开销)1.5 ms<5 ms
热复用2.85 μs<100 μs
WAF 开销1.23 μs<10 μs
单会话内存2.1 KB<10 KB
并发会话支持5000+1000

3.2 现实场景延迟分解

对于使用实际 Claude Code CLI 的典型请求:

总延迟: ~1.5-3 秒
├── Node.js 冷启动:        ~1.0-2.0s  (仅首个请求)
├── HotPlex 运行开销:       ~1.5ms     (可忽略)
├── Claude API 响应:        ~0.5-1.0s  (取决于模型)
└── 流处理执行:             ~10-50ms   (Token 流式传输)

3.3 热复用优势对照

场景不含 HotPlex包含 HotPlex提升倍数
10 次连续请求10-20s5-10s2倍提升
100 次连续请求100-200s50-100s2倍提升
多轮对话交互每轮 5-10s每轮 0.5-1s10倍提升

4. 优化建议

4.1 生产环境调优

参数推荐值备注
IdleTimeout30-60 分钟平衡内存占用与冷启动率
MaxSessions每实例 1000 个根据内存容量调整
Timeout5-10 分钟单个请求的超时时间

4.2 扩容建议

并发用户数推荐实例数
1-1001 个实例
100-5002-3 个实例
500-20005-10 个实例
2000+考虑 Kubernetes HPA

5. 如何运行基准测试

bash
# 运行所有基准测试
go test -tags=benchmark -bench=. -benchmem ./engine/

# 运行特定基准测试
go test -tags=benchmark -bench=BenchmarkHotMultiplex -benchmem ./engine/

# 运行并生成 CPU Profile
go test -tags=benchmark -bench=. -cpuprofile=cpu.prof ./engine/
go tool pprof cpu.prof

# 运行并生成内存 Profile
go test -tags=benchmark -bench=. -memprofile=mem.prof ./engine/
go tool pprof mem.prof

6. 测试环境说明

测试运行于:Apple Silicon M 系列芯片, 16GB RAM 实际环境结果可能因以下因素而异:

  • 实际使用的 CLI 二进制文件 (Claude Code vs OpenCode vs Mock)
  • 访问 LLM API 的网络延迟
  • 系统负载和可用资源
  • Go 版本和 GC 设置

本报告由 HotPlex 基准测试套件自动生成如有疑问:https://github.com/hrygo/hotplex/issues

Released under the MIT License.