memoryweave/BENCHMARK.md

110 lines
4.0 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 织忆 MemoryWeave — 性能基准报告
> 测试环境: i5-11260H @ 2.60GHz (12 核), Linux amd64
> 基准: go test -bench=. -benchtime=1s
## 1. 存储层
| 操作 | 吞吐 | 延迟 | 说明 |
|------|------|------|------|
| CosineSimilarity (1024-dim) | 4.6M ops/s | **254 ns** | 纯向量计算,无外存 |
| MMR Rerank (50→10) | 1.1K ops/s | **847 μs** | 50 文档逐对比较 |
| LargePayload Mem (10KB) | 187K ops/s | **6.3 μs** | 内存分配开销 |
## 2. 治理层
### 冲突检测
| 操作 | 吞吐 | 延迟 | 说明 |
|------|------|------|------|
| Scan (100 existing) | 600K ops/s | **2.2 μs** | 100 条已有记忆扫描 |
| IsContradiction | 1.8M ops/s | **622 ns** | 否定词启发式 |
### 遗忘策略
| 操作 | 吞吐 | 延迟 | 说明 |
|------|------|------|------|
| DecayScore | 22M ops/s | **54 ns** | 指数衰减计算 |
| ShouldForget | 36M ops/s | **32 ns** | 核心保护短路径 |
### 知识图谱
| 操作 | 吞吐 | 延迟 | 说明 |
|------|------|------|------|
| AddNode | 2.2M ops/s | **535 ns** | 内存哈希表 |
| AddEdge | 4.2M ops/s | **321 ns** | 切片追加 |
| Navigate (5 hops, 200 nodes) | 9.2K ops/s | **108 μs** | BFS 3 边/节点 |
| Navigate (10 hops deep, 500 nodes) | 4.1K ops/s | **244 μs** | 深链追踪 |
| Navigate (3 hops, 2000 nodes) | 2.1K ops/s | **485 μs** | 大规模图谱 |
| Prune (500 nodes) | 7.4K ops/s | **135 μs** | 孤立节点+低权重边清理 |
> 图谱导航是 O(V+E) BFS2000 节点 3 跳仅 485 μs远低于 1ms 目标。
## 3. 自优化层
### 仪表盘
| 操作 | 吞吐 | 延迟 | 说明 |
|------|------|------|------|
| Metrics (7 指标) | 6.6M ops/s | **187 ns** | 7 项公式计算 |
| RecordRecall (parallel) | 15M ops/s | **75 ns** | 原子计数 |
| RecordFeedback (parallel) | 15M ops/s | **74 ns** | 原子计数 |
### 缺口检测
| 操作 | 吞吐 | 延迟 | 说明 |
|------|------|------|------|
| RecordMiss | 30M ops/s | **39 ns** | Map 计数 |
| List (100 gaps) | 776K ops/s | **1.5 μs** | 遍历+过滤 |
| Close | 13M ops/s | **90 ns** | Map 标记 |
### 因果追踪
| 操作 | 吞吐 | 延迟 | 说明 |
|------|------|------|------|
| RecordVersion | 3.6M ops/s | **362 ns** | 版本链追加 |
| GetAffected (100 链) | 13K ops/s | **74 μs** | 递归依赖传播 |
| IsVolatile | 78M ops/s | **15 ns** | 版本计数判断 |
### 记忆预取
| 操作 | 吞吐 | 延迟 | 说明 |
|------|------|------|------|
| RecordCoAccess | 36M ops/s | **33 ns** | 双层 Map |
| GetPrefetch | 6.6M ops/s | **181 ns** | 概率过滤 |
## 4. 分布式层
| 操作 | 吞吐 | 延迟 | 说明 |
|------|------|------|------|
| CRDT Merge | 4.1M ops/s | **325 ns** | 时间戳+来源优先级 |
| RateLimiter Allow | 14.7M ops/s | **79 ns** | 令牌桶 |
| RateLimiter Allow (parallel) | 7.9M ops/s | **149 ns** | 锁竞争开销 |
| RateLimiter MultiAgent | 14.6M ops/s | **80 ns** | 5 Agent 分桶 |
| EventBus Publish | 4.0M ops/s | **304 ns** | 本地 handler 触发 |
| EventBus Publish (parallel) | 4.3M ops/s | **270 ns** | goroutine 安全 |
## 5. 性能评估
### 关键指标全量
| 瓶颈 | 当前延迟 | 目标 | 状态 |
|------|---------|------|------|
| 图谱导航 (2000 节点) | 485 μs | < 1ms | |
| CRDT 合并 | 325 ns | < 1μs | |
| 冲突扫描 (100 ) | 2.2 μs | < 10μs | |
| 因果传播 (100 ) | 74 μs | < 1ms | |
| 仪表盘 (7 指标) | 187 ns | < 1μs | |
| MMR 重排 (5010) | 847 μs | < 5ms | |
| LanceDB 召回 | 需实测 | < 200ms | LanceDB 环境 |
### 瓶颈分析
1. **MMR 重排** (847 μs)50 文档 O(n²) 逐对比较是最大计算瓶颈文档数 > 100 时需分治。
2. **LanceDB 召回**:未经实测,这是全系统唯一不可控的延迟源(网络 I/O + ANN 搜索)。
3. **图谱深度导航**10 跳 244 μs 尚可BFS 复杂度 O(V+E),大规模时需索引优化。
### 综合评级
**整体性能远超设计目标。** 所有纯 CPU 操作均在纳秒/微秒级,瓶颈完全在外部 I/OLanceDB API、Embedding 模型推理)。