Golang交互式性能基准可视化工具 - Vizb使用指南

Golang交互式性能基准可视化工具 - Vizb使用指南 在 Go 语言中进行基准测试很容易,但当我需要与不同库、以及我自己的库 varmq 进行对比测试时,我发现很难直观地比较结果。

毕竟,没有任何可视化地阅读基准测试结果并不那么令人愉快。

我搜索了各种可视化工具,但没能找到一款完全符合我需求的。

所以,简而言之,我开始构建一个新工具,它可以通过一条命令,根据基准测试输出生成一个 HTML 画布。

go test -benchmem -bench -json | vizb -o output.html

然后,砰!💥

它会在一个 HTML 文件中生成一个交互式图表,并且每个图表都可以下载为 PNG 格式。

此外,我还为它添加了一些很酷的选项。

➡️ 在 GitHub 上查看此项目。

我希望它对你下一次的基准测试有所帮助。谢谢!


更多关于Golang交互式性能基准可视化工具 - Vizb使用指南的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang交互式性能基准可视化工具 - Vizb使用指南的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Vizb 确实是一个很实用的工具,它解决了 Go 基准测试结果可视化不足的痛点。通过简单的管道操作就能生成交互式图表,这大大提升了性能对比分析的效率。

以下是一个完整的使用示例,展示如何结合你的 varmq 库进行基准测试和可视化:

// varmq_benchmark_test.go
package varmq_test

import (
    "testing"
    "github.com/goptics/varmq"
    "github.com/other/mqlib" // 对比库
)

func BenchmarkVarmqProduce(b *testing.B) {
    broker := varmq.NewBroker()
    defer broker.Close()
    
    b.ResetTimer()
    for i := 0; i < b.N; i++ {
        broker.Produce("test-topic", []byte("message"))
    }
}

func BenchmarkOtherMQLibProduce(b *testing.B) {
    broker := mqlib.NewBroker()
    defer broker.Close()
    
    b.ResetTimer()
    for i := 0; i < b.N; i++ {
        broker.Publish("test-topic", []byte("message"))
    }
}

运行基准测试并生成可视化报告:

# 运行所有基准测试,输出 JSON 格式并通过 vizb 处理
go test -benchmem -bench . -json | vizb -o benchmark_comparison.html

# 也可以保存 JSON 结果供后续分析
go test -benchmem -bench . -json > results.json
vizb -i results.json -o varmq_vs_mqlib.html

# 使用自定义主题
vizb -i results.json -o output.html -theme dark

# 指定特定图表类型
vizb -i results.json -o output.html -chart bar

生成的 HTML 文件包含以下交互功能:

  1. 悬停显示详细数据点信息
  2. 点击图例切换数据系列显示
  3. 图表缩放和平移
  4. PNG 格式导出按钮
  5. 多图表对比视图

对于持续集成场景,可以这样集成:

# 在 CI 流水线中生成性能报告
go test -benchmem -bench . -json | vizb -o performance_report.html
# 上传到报告服务器或作为构建产物保存

Vizb 的 JSON 输入格式完全兼容 go test -json 的输出,这意味着它可以无缝集成到现有的 Go 测试工作流中。工具还支持从多个基准测试运行合并数据,方便进行跨版本或跨配置的性能对比。

# 合并多个基准测试结果
vizb -i result1.json result2.json result3.json -o combined.html -title "版本性能对比"

这个工具特别适合需要定期监控性能变化的项目,通过自动化的可视化报告,可以快速识别性能回归问题。

回到顶部