# Fig 语言性能基准测试报告

## 版本: 0.4.2-alpha (树遍历解释器)

### 测试环境
- **CPU:** Intel Core i5-13490F
- **操作系统:** Windows 11
- **编译器/解释器:** Fig 树遍历解释器 v0.4.2-alpha
- **测试日期:** 当前测试执行

### 执行摘要
本基准测试评估了 Fig 语言中四种不同斐波那契算法实现的性能，计算第30个斐波那契数（832,040）。结果显示基于算法方法的显著性能差异，突出了解释器的效率特性。

## 性能结果

### 原始执行时间

| 算法                | 时间(秒)     | 时间(毫秒)    | 相对速度     |
| ------------------- | ------------ | ------------- | ------------ |
| `fib` (朴素递归)    | 11.7210479 s | 11721.0479 ms | 1.00× (基准) |
| `fib_memo` (记忆化) | 0.0009297 s  | 0.9297 ms     | 12,600× 更快 |
| `fib_iter` (迭代)   | 0.0003746 s  | 0.3746 ms     | 31,300× 更快 |
| `fib_tail` (尾递归) | 0.0004009 s  | 0.4009 ms     | 29,200× 更快 |

### 可视化性能对比
```
朴素递归      : ████████████████████████████████████████ 11.72秒
记忆化递归    : ▉ 0.93毫秒
迭代算法      : ▍ 0.37毫秒
尾递归        : ▎ 0.40毫秒
```

## 详细分析

### 1. 朴素递归实现 (`fib`)
- **时间:** 11.721 秒 (11,721 毫秒)
- **算法复杂度:** O(2ⁿ) 指数级
- **性能说明:**
  - 展示了树遍历解释器中重复函数调用的高成本
  - 在仅 n=30 的情况下显示了指数时间复杂度
  - 突出了解释型语言中算法优化的必要性

### 2. 记忆化递归实现 (`fib_memo`)
- **时间:** 0.93 毫秒
- **算法复杂度:** O(n) 线性（含记忆化开销）
- **性能说明:**
  - 比朴素递归快 12,600 倍
  - 显示 Fig 中哈希表/字典操作的高效性
  - 证明缓存可以克服解释器开销

### 3. 迭代实现 (`fib_iter`)
- **时间:** 0.375 毫秒
- **算法复杂度:** O(n) 线性
- **性能说明:**
  - 最快的实现（比朴素递归快 31,300 倍）
  - 显示高效的循环执行和变量操作
  - 函数调用开销最小

### 4. 尾递归实现 (`fib_tail`)
- **时间:** 0.401 毫秒
- **算法复杂度:** O(n) 线性
- **性能说明:**
  - 与迭代方法相当（由于递归开销略慢）
  - 当前解释器未实现尾调用优化（TCO）
  - 显示线性递归在中等深度（n=30）下是高效的

## 技术洞察

### 解释器性能特征
1. **函数调用开销:** 显著，如朴素递归性能所示
2. **循环效率:** 优秀，迭代方法表现最佳
3. **内存访问:** 哈希表操作（记忆化）高效
4. **递归深度:** 线性递归（尾递归）在中等深度下表现良好

### 算法影响
基准测试清楚地表明，**在此版本中，算法选择比解释器优化影响更大**：
- 差算法（朴素递归）：11.7 秒
- 好算法（任何 O(n) 方法）：< 1 毫秒

## 版本特定观察 (v0.4.2-alpha)

### 优势
- 迭代算法性能优秀
- 基本操作（算术、循环、条件判断）高效
- 缓存结果的内存访问模式有效
- 线性递归性能在典型用例中可接受

### 改进空间
- 深度递归场景中函数调用开销高
- 未实现尾调用优化
- 指数算法性能显示解释器限制

## 给开发者的建议

1. **性能关键代码优先使用迭代解决方案**
2. **对于有重叠子问题的递归问题使用记忆化**
3. **线性递归模式可接受尾递归**
4. **避免在解释型代码中使用指数算法**
5. **基准测试不同方法**，因为算法选择主导性能

## 结论

Fig v0.4.2-alpha 展示了**对设计良好的算法的实用性能**。虽然树遍历解释器对某些模式（如深度递归）有固有开销，但它能以亚毫秒性能执行高效的 O(n) 算法（n=30时）。

解释器在以下方面表现特别出色：
- 迭代循环执行
- 基本算术和控制流
- 用于缓存的字典/表操作

性能特征适用于广泛的应用领域，前提是开发者采用标准的算法优化技术。

---

**报告生成时间:** 基于实际基准测试执行  
**解释器类型:** 树遍历解释器  
**版本:** 0.4.2-alpha  
**关键要点:** 算法效率主导性能；尽管 Fig 是 alpha 阶段的树遍历解释器，但它能高效执行优化算法。