Go版本
go版本 devel go1.24-f428c7b7 Sat Aug 3 05:06:40 2024 +0000 windows/amd64
在你的模块/工作区中go env
的输出:
set GO111MODULE=auto
set GOARCH=amd64
set GOBIN=
set GOCACHE=D:\file\go-build
set GOENV=C:\Users\26454\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=D:\file\gofile\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=D:\file\gofile
set GOPRIVATE=
set GOPROXY=https://goproxy.cn,direct
set GOROOT=C:\Users\26454\.go\current
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLCHAIN=local
set GOTOOLDIR=C:\Users\26454\.go\current\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=devel go1.24-f428c7b7 Sat Aug 3 05:06:40 2024 +0000
set GODEBUG=
set GOTELEMETRY=on
set GOTELEMETRYDIR=C:\Users\26454\AppData\Roaming\go\telemetry
set GCCGO=gccgo
set GOAMD64=v3
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
go: stripping unprintable or unescapable characters from %"GOMOD"%
set GOMOD=D:\file\gofile\U������\u\u-language\ucom\go.mod
set GOWORK=
set CGO_CFLAGS=-O2 -g
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-O2 -g
set CGO_FFLAGS=-O2 -g
set CGO_LDFLAGS=-O2 -g
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=C:\Users\26454\AppData\Local\Temp\go-build1658404967=/tmp/go-build -gno-record-gcc-switches
你做了什么?
重复步骤:
git clone https://gitee.com/u-language/u-language.git -b pgo2024-8-20
cd u-language
设置环境变量URoot为当前路径
cd ucom
go test -run=ssss -bench="ComplierToCBuildMode2/多文件" -count=10 -pgo off > new.txt && sleep 20 && go test -run=ssss -bench="ComplierToCBuildMode2/多文件" -count=10 -pgo default.pgo > pgo.txt && benchstat new.txt pgo.txt
你看到了什么?
pgo不会导致性能下降
你期望看到什么?
│ new.txt │ pgo.txt │
│ sec/op │ sec/op vs base │
ComplierToCBuildMode2/多文件-16 177.0µ ± 1% 202.8µ ± 1% +14.58% (p=0.000 n=10)
│ new.txt │
│ B/s │
ComplierToCBuildMode2/多文件-16 9.766Ki ± 0%
│ new.txt │ pgo.txt │
│ B/op │ B/op vs base │
ComplierToCBuildMode2/多文件-16 32.64Ki ± 0% 32.51Ki ± 0% -0.38% (p=0.000 n=10)
│ new.txt │ pgo.txt │
│ allocs/op │ allocs/op vs base │
ComplierToCBuildMode2/多文件-16 498.0 ± 0% 495.0 ± 0% -0.60% (p=0.000 n=10)
│ pgo.txt │
│ MB/s │
ComplierToCBuildMode2/多文件-16 0.000 ± 0%
我尝试了tip,发现pgo在基准测试中导致性能下降。
我尝试了4b43b74,但没有发现pgo在基准测试中导致性能下降。
使用git bisect到1b03568
4条答案
按热度按时间shyt4zoc1#
相关问题和文档
(如果觉得有帮助,请给表情投票;欢迎在 this discussion 中提供更详细的反馈。)
ajsxfq5m2#
CL更改了一些内联阈值。在CL中,哪些函数内联发生了变化?例如,它之前没有内联,但在CL之后内联了,或者反之亦然?
这是什么类型的基准测试?是微基准测试吗?如何收集性能分析数据?谢谢。
rvpgvaaj3#
它是什么类型的基准?
基准来自于我在研究编译原理时写的开源代码。它读取测试数据并处理它。
它是微基准吗?
不,基准调用多个函数,根据基准数据,时间在微秒级别。
如何收集性能分析?
运行
go test -run=ssss -bench=. -trimpath -benchtime=400ms -cpuprofile="default.pgo"
5cnsuln74#
在CL中,内联阈值发生了变化。在这个CL中,哪些函数的内联发生了变化?例如,之前没有内联,但在这个CL之后进行了内联,或者反之亦然?
我使用了
D:\file\gofile\gogit\go1\bin\go build -gcflags=all="-d=pgoinline=1" -pgo default.pgo -trimpath
和https://github.com/qiulaidongfeng/diffbench我得到了: