Files
go-pixelnebula/benchmark/README.md
2025-03-19 21:10:19 +08:00

5.4 KiB
Raw Permalink Blame History

🚀 PixelNebula 基准测试

英文 | 中文

📊 简介

本目录包含了 PixelNebula 库的全面基准测试,用于测量和分析库在各种操作场景下的性能表现。这些测试可以帮助我们识别潜在的性能瓶颈,并指导后续的优化工作。


🧪 测试内容

基本生成
基本头像生成
样式和主题
样式和主题
动画效果
动画效果
缓存系统
缓存系统
并发性能
并发与内存

基准测试涵盖了 PixelNebula 的以下核心功能:

1. 🖼️ 基本头像生成 (basic_benchmark_test.go)

  • 普通头像生成
  • 无环境头像生成
  • 不同尺寸头像生成
  • 相同ID多次生成

2. 🎨 样式和主题 (style_theme_benchmark_test.go)

  • 不同样式的性能对比
  • 不同主题的性能对比
  • 自定义主题
  • 样式与主题组合

3. 动画效果 (animation_benchmark_test.go)

  • 旋转动画
  • 渐变动画
  • 淡入淡出动画
  • 变换动画
  • 颜色动画
  • 多个动画组合

4. 💾 缓存系统 (cache_benchmark_test.go)

  • 无缓存 vs. 默认缓存
  • 不同缓存大小
  • 缓存压缩效果
  • 不同过期时间配置

5. 并发与内存使用 (concurrency_memory_benchmark_test.go)

  • 不同并发级别的性能
  • 共享实例的并发性能
  • 各种操作的内存占用分析

🚀 运行基准测试

运行所有测试

cd benchmark
go test -bench=. -benchmem

运行特定测试组

🏃 基本测试

go test -bench=BenchmarkBasic -benchmem

💾 缓存测试

go test -bench=BenchmarkCache -benchmem

动画测试

go test -bench=BenchmarkAnimation -benchmem

高级配置

⚙️ 设置CPU计数

go test -bench=. -benchmem -cpu=1,2,4,8

⏱️ 设置迭代次数和时间

go test -bench=. -benchmem -count=5 -benchtime=5s

📈 测试结果分析

运行测试后,结果会以如下格式显示:

BenchmarkBasicAvatarGeneration-8     5000     234567 ns/op    12345 B/op    123 allocs/op
组成部分 描述
BenchmarkBasicAvatarGeneration-8 测试名称8表示使用8个CPU
5000 测试运行的迭代次数
234567 ns/op 每次操作的平均耗时(纳秒)
12345 B/op 每次操作的平均内存分配(字节)
123 allocs/op 每次操作的平均内存分配次数

📝 添加基准测试

在添加新功能时,建议同时添加相应的基准测试:

  1. 创建测试函数:为特定功能创建新的测试函数,命名为 BenchmarkXXX
  2. 重置计时器:使用 b.ResetTimer() 在准备工作完成后重置计时器
  3. 创建子测试:使用 b.Run() 创建子测试以对比不同变量
  4. 使用迭代计数:使用 b.N 作为迭代次数以确保统计准确性

示例:

func BenchmarkMyFeature(b *testing.B) {
    // 准备代码
    pn := pixelnebula.NewPixelNebula()
    
    // 在实际基准测试前重置计时器
    b.ResetTimer()
    
    // 运行基准测试
    for i := 0; i < b.N; i++ {
        // 要测试的代码
        pn.MyFeature()
    }
}

更多信息,请查看 PixelNebula 文档和示例。

© 2024 landaiqing