当前位置: 首页 > news >正文

国外网站设计参考做网站哪个平台好

国外网站设计参考,做网站哪个平台好,黄岛开发区网站制作,企业可以做哪些网站有哪些内容吗一、什么是基准测试(Benchmark) 在 Go 中,基准测试是通过创建以 Benchmark 开头的函数,并接收一个 *testing.B 类型的参数来实现的。testing.B 提供了控制基准测试执行的接口,比如设置测试执行的次数、记录每次执行的…

一、什么是基准测试(Benchmark)

在 Go 中,基准测试是通过创建以 Benchmark 开头的函数,并接收一个 *testing.B 类型的参数来实现的。testing.B 提供了控制基准测试执行的接口,比如设置测试执行的次数、记录每次执行的时间等。

每个基准测试函数都必须接受一个 *testing.B 类型的参数。函数体内通过 b.N来控制基准测试的执行次数,Go 会自动调整 b.N 的值,确保每次基准测试运行的时间足够长。

例如:

package mainimport ("testing"
)// 基准测试函数
func BenchmarkMyFunction(b *testing.B) {// 这里是测试的代码,每次循环 b.N 次for i := 0; i < b.N; i++ {// 被测试的函数或代码块_ = "hello"}
}

二、怎么进行基准测试

要运行基准测试,可以使用 go test 命令,指定 -bench 标志来启动基准测试。

go test -bench .
  • bench .:表示运行当前目录下所有以 Benchmark 开头的函数。
  • bench <pattern> :可以通过提供正则表达式来运行特定的基准测试,比如 go test -bench BenchmarkMyFunction 仅运行 BenchmarkMyFunction。

运行基准测试并报告内存分配

go test -bench . -benchmem
  • benchmem:该标志会显示内存分配的详细信息,包括每次基准测试中分配了多少内存。
package mainimport ("testing""unsafe"
)func BenchmarkBytes2Str(b *testing.B) {aa := []byte("mclink")for n := 0; n < b.N; n++ {Bytes2Str(aa)}
}
func BenchmarkBytes2StrUnsafe(b *testing.B) {aa := []byte("mclink")for n := 0; n < b.N; n++ {Bytes2StrUnsafe(aa)}
}func Bytes2Str(b []byte) string {return string(b)
}func Bytes2StrUnsafe(b []byte) string {return *(*string)(unsafe.Pointer(&b))
}

在这里插入图片描述
#从左到右分别表示benchmark函数、运行次数、单次运行消耗的时间、单次运行内存分配的字节数和次数

BenchmarkBytes2Str-8 :基准测试的名称和 CPU 核心数量(这里 -8 表示在 8 核 CPU 上运行)。
317858601:测试函数执行了 20,000,000 次。
3.720 ns/op:每次执行 BenchmarkBytes2Str-8 的平均耗时为 3.72 纳秒。
0 B/op:每次测试没有内存分配。
0 allocs/op:每次测试没有进行内存分配。

三、复杂的基准测试

有时在基准测试中,某些初始化工作并不应该计入测试时间。可以使用 b.StartTimer() 和 b.StopTimer() 来控制计时开始和结束。

func BenchmarkWithStartStopTimer(b *testing.B) {// 1. 先进行一些初始化工作setup()// 2. 在基准测试前停止计时(这部分不会计入基准测试时间)b.StopTimer()// 3. 进行某些准备工作或其他代码,这部分不会计入基准测试时间time.Sleep(100 * time.Millisecond)// 4. 启动计时,开始计入基准测试时间b.StartTimer()// 5. 开始基准测试for i := 0; i < b.N; i++ {performWork()}// 6. 结束时停止计时b.StopTimer()
}
  • b.StartTimer():开始计时。
  • b.StopTimer():停止计时。
  • b.ResetTimer():重置计时器,确保计时仅限于你关心的代码

你可以使用 b.ReportAllocs() 启用内存报告,来查看每次基准测试中分配了多少内存。

func BenchmarkAllocations(b *testing.B) {b.ReportAllocs() // 启用内存分配报告for i := 0; i < b.N; i++ {_ = make([]byte, 1024) // 模拟内存分配}
}

在这里插入图片描述

  • 通过 -benchtime 设置基准测试时间
    go test 命令支持 -benchtime 标志,可以控制基准测试的执行时长。例如,如果你想要让基准测试执行 2 秒钟:
go test -bench . -benchtime=2s
  • 跳过普通单元测试,只运行基准测试
    如果你只想运行基准测试,而跳过普通的单元测试,可以使用 -run=^$ 来过滤单元测试:
go test -bench . -run=^$
  • 和pprof 混合双打
package mainimport ("fmt""testing""time""runtime/pprof""os"
)// 需要进行基准测试的函数
func performTask() {// 模拟耗时操作time.Sleep(100 * time.Millisecond)
}// 基准测试函数
func BenchmarkWithPprof(b *testing.B) {// 创建一个文件来保存 CPU 分析数据f, err := os.Create("cpu.pprof")if err != nil {b.Fatal("could not create CPU profile: ", err)}defer f.Close()// 启动 pprof,开始记录 CPU 使用情况if err := pprof.StartCPUProfile(f); err != nil {b.Fatal("could not start CPU profile: ", err)}defer pprof.StopCPUProfile()// 进行基准测试for i := 0; i < b.N; i++ {performTask()}
}// 运行基准测试的命令:go test -bench .
// 运行完之后会生成一个 cpu.pprof 文件,可以用 go tool pprof 查看分析数据。

如何使用 pprof 请看上一篇文章。

下一篇:Go的 Trace 工具~

http://www.zhongyajixie.com/news/10959.html

相关文章:

  • 云主机如何建网站中文搜索引擎排行榜
  • 晋中做网站公司三台网站seo
  • 哈尔滨建筑工程上海优化公司排行榜
  • 湘潭做网站 搜搜磐石网络快速排名刷
  • 政府网站建设和数据开放共享10种营销方法
  • 个人博客网站模板源码提高关键词排名的软文案例
  • unity做网站网站优化培训班
  • adobe mu做可视化网站中国市场营销网网站
  • 专业团队张伟图片seo综合查询怎么用的
  • 网站开发准备流程重庆seo和网络推广
  • 申请网站建设的请示网站搭建软件
  • 做微信网站支付需要什么信息表外贸独立站建站
  • 国外网站兼职做效果图惠州网络推广
  • b2bb2c网站电子商务网站建设前期方案做抖音seo排名软件是否合法
  • 海南建设培训与执业资格注册中心网站seo是指搜索引擎优化
  • 营销型wordpress模板竞价关键词优化软件
  • c#网站开发模板百度云网盘资源搜索引擎
  • 自己做网站卖矿山设备绍兴seo公司
  • 网站后台权限管理怎么做的百度免费优化
  • wordpress给指定用户设置角色汕头自动seo
  • 在线地址最新版长春网络优化哪个公司在做
  • 买源码做网站简单嘛移投界seo
  • 做百度网站需不需要备案互联网金融营销案例
  • 动态网站开发什么技术好江门网站建设
  • 建立网站做淘客会计培训机构
  • 平潭城乡住房建设厅网站浙江网络推广公司
  • 旅游网站建站目的百度的官方网站
  • 如何把网站放到域名上永久免费wap自助建站
  • 网站设计的流程是怎样的百度识图扫一扫入口
  • 商标查询软件哪个app好网站整体优化