# 函数提取和缓存功能说明

## 功能概述

本项目新增了函数提取和缓存功能，用于从nut文件中提取函数信息并进行缓存，为后续的函数跳转功能做准备。

## 主要组件

### 1. FunctionInfo 接口
定义了函数信息的数据结构：
- `name`: 函数名称
- `filePath`: 文件路径
- `lineNumber`: 行号
- `parameters`: 参数列表
- `signature`: 函数签名

### 2. FunctionCacheManager 类
负责管理函数信息的缓存：
- 缓存函数信息
- 提供函数查找功能
- 统计缓存信息
- 缓存在VS Code会话期间一直有效，直到重新获取nut文件时重置

### 3. FunctionExtractor 类
负责从文件中提取函数信息：
- 解析Squirrel语言的函数定义
- 批量处理文件
- 防止重复提取
- 性能监控

### 4. PerformanceMonitor 类
监控函数提取的性能：
- 记录提取时间
- 计算平均处理时间
- 提供性能统计信息

## 工作流程

1. 用户点击"连接到 pvfUtility"时，系统自动获取所有nut文件内容
2. 连接成功后，自动启动函数提取过程
3. FunctionExtractor逐个解析文件中的函数定义
4. 提取的函数信息被缓存到FunctionCacheManager中
5. 缓存在VS Code会话期间一直有效
6. 当用户保存nut文件时，自动更新对应文件的函数缓存
7. 性能数据被记录用于优化

## 性能优化措施

1. **批量处理**: 文件按批次处理，避免内存溢出
2. **并行处理**: 批次内的文件并行处理，提高效率
3. **缓存机制**: 避免重复解析已处理的文件
4. **增量更新**: 仅在文件保存时更新对应文件的缓存
5. **防重复提取**: 防止同时进行多次提取操作
6. **性能监控**: 监控提取性能，为优化提供数据支持

## 使用方法

1. 函数提取功能在用户连接到pvfUtility后自动执行，无需手动操作。
2. 当用户保存nut文件时，对应的函数缓存会自动更新。
3. 缓存在整个VS Code会话期间一直有效，直到重新获取nut文件时重置。

## 后续开发

当前实现为函数跳转功能奠定了基础，下一步可以：
1. 实现函数跳转到定义功能
2. 添加函数引用查找功能
3. 提供函数自动补全功能