3.3 KiB
3.3 KiB
Tracy 性能测试代码说明
这个项目包含多个高性能计算测试用例,用于展示 Tracy 性能分析器的功能。
测试内容
1. 矩阵乘法 (Matrix Multiplication)
- 200x200 矩阵相乘
- 展示计算密集型操作的性能
- 三重循环,复杂度 O(n³)
2. 快速排序 (Quick Sort)
- 对 100,000 个随机整数进行排序
- 展示递归算法的性能特征
- 平均复杂度 O(n log n)
3. 质数计算 (Prime Numbers)
- 使用埃拉托斯特尼筛法
- 计算 0-1,000,000 范围内的所有质数
- 展示循环嵌套和内存访问模式
4. 蒙特卡罗π值计算 (Monte Carlo Pi)
- 使用随机采样方法估算π值
- 10,000,000 次迭代
- 展示随机数生成和条件判断的性能
5. 斐波那契数列 (Fibonacci)
- 递归方法: fibonacci(35) - 展示递归调用的开销
- 动态规划: fibonacci(90) - 展示优化算法的性能差异
6. 向量点积 (Vector Dot Product)
- 10,000,000 维向量点积计算
- 展示大规模线性代数运算
- 内存访问密集型操作
7. 复杂数学运算 (Complex Math)
- sin, cos, tan, sqrt, log 等函数组合
- 1,000,000 次迭代
- 展示浮点运算性能
8. 内存密集型操作 (Memory Intensive)
- 创建 1000x1000 二维数组
- 填充和遍历大量数据
- 展示内存分配和访问模式
9. 多线程测试 (Multi-Threading)
- 8 个线程并行执行
- 每个线程执行 50,000,000 次计算
- 展示多线程性能和同步开销
如何使用
1. 编译项目
# 在 Visual Studio 中打开项目
# 选择 Release 配置以获得最佳性能测试结果
# 构建项目
2. 启动 Tracy Profiler
# 从 Tracy 仓库的 profiler 目录运行
# 或使用预编译的 Tracy.exe
3. 运行测试程序
# 运行 MyProject.exe
# Tracy Profiler 会自动连接(如果启用了 TRACY_ON_DEMAND)
4. 在 Tracy 中观察
- 查看每个函数的执行时间
- 比较递归 vs 动态规划的性能差异
- 观察多线程的并行执行情况
- 分析热点函数和瓶颈
Tracy 宏说明
ZoneScoped: 自动追踪整个函数的执行时间ZoneScopedN("名称"): 追踪代码块并指定自定义名称FrameMark: 标记帧边界,便于区分不同的测试轮次
性能优化建议
根据 Tracy 的分析结果,你可以:
- 识别热点: 找出耗时最长的函数
- 优化算法: 比较不同算法实现(如递归 vs 动态规划)
- 并行化: 识别可以并行化的计算
- 缓存优化: 观察内存访问模式,优化数据结构
- 减少递归: 递归调用会带来额外开销
预期结果
在 Tracy Profiler 中,你应该能够看到:
- 矩阵乘法: 相对较长的执行时间,CPU 密集
- 递归斐波那契: 大量重复的函数调用(可视化调用树)
- 动态规划斐波那契: 单次执行,线性时间
- 多线程: 8 个并行执行的线程,清晰的时间线
- 质数计算: 循环密集,但相对高效
- 蒙特卡罗: 稳定的执行时间,随机数生成开销
提示
- 使用 Release 配置编译可以获得更接近实际应用的性能数据
- 多次运行测试可以在 Tracy 中观察性能的一致性
- 尝试修改参数(矩阵大小、迭代次数等)观察性能变化
- 使用 Tracy 的统计功能分析函数调用次数和平均执行时间