``` cmd/compile: pgo after CL 449477 cause worse performance on benchmark ```

0wi1tuuw  于 3个月前  发布在  Go
关注(0)|答案(4)|浏览(36)

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

ajsxfq5m

ajsxfq5m2#

CL更改了一些内联阈值。在CL中,哪些函数内联发生了变化?例如,它之前没有内联,但在CL之后内联了,或者反之亦然?
这是什么类型的基准测试?是微基准测试吗?如何收集性能分析数据?谢谢。

rvpgvaaj

rvpgvaaj3#

它是什么类型的基准?

基准来自于我在研究编译原理时写的开源代码。它读取测试数据并处理它。

它是微基准吗?

不,基准调用多个函数,根据基准数据,时间在微秒级别。

如何收集性能分析?

运行go test -run=ssss -bench=. -trimpath -benchtime=400ms -cpuprofile="default.pgo"

5cnsuln7

5cnsuln74#

在CL中,内联阈值发生了变化。在这个CL中,哪些函数的内联发生了变化?例如,之前没有内联,但在这个CL之后进行了内联,或者反之亦然?
我使用了D:\file\gofile\gogit\go1\bin\go build -gcflags=all="-d=pgoinline=1" -pgo default.pgo -trimpathhttps://github.com/qiulaidongfeng/diffbench
我得到了:

// old inline , but new not inline
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*Tree).parserExpr at gitee.com/u-language/u-language/ucom/ast2\parser.go:210:30
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*Tree).parserExpr at gitee.com/u-language/u-language/ucom/ast2\parser.go:584:32
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*Tree).parserExpr at gitee.com/u-language/u-language/ucom/ast2\parser.go:876:28
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*Tree).parserExpr at gitee.com/u-language/u-language/ucom/ast2\parser.go:915:27
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*Tree).parserType at gitee.com/u-language/u-language/ucom/ast2\parser.go:196:27
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*Tree).parserType at gitee.com/u-language/u-language/ucom/ast2\parser.go:837:28
----------------
// new inline , but old not inline
hot-budget check allows inlining for call bufio.(*Reader).ReadLine at gitee.com/u-language/u-language/ucom/internal/utils\Split.go:55:34
hot-budget check allows inlining for call bufio.(*Reader).ReadSlice at bufio\bufio.go:401:25
hot-budget check allows inlining for call bufio.(*Reader).fill at bufio\bufio.go:372:9
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*FuncNode).C at gitee.com/u-language/u-language/ucom/cast2\utoc.go:66:5
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*Object).C at gitee.com/u-language/u-language/ucom/ast2\type.go:1289:15
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*Package).AddFile at gitee.com/u-language/u-language/ucom/parser\buildmode2.go:104:13
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*Sbt).AddStruct at gitee.com/u-language/u-language/ucom/ast2\parser.go:816:17
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*Sbt).add at gitee.com/u-language/u-language/ucom/ast2\sbt.go:94:14
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*Sbt).have at gitee.com/u-language/u-language/ucom/ast2\sbt.go:288:19
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*StructDecl).c at gitee.com/u-language/u-language/ucom/ast2\type.go:1123:5
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*Tree).SubRbrace at gitee.com/u-language/u-language/ucom/ast2\parser.go:53:14
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*Tree).SubRbrace at gitee.com/u-language/u-language/ucom/check3\check3.go:67:14
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*Tree).parserCase at gitee.com/u-language/u-language/ucom/ast2\parser.go:119:15
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*Tree).parserObject2 at gitee.com/u-language/u-language/ucom/ast2\parser.go:332:24
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*VarNode).C at gitee.com/u-language/u-language/ucom/cast2\utoc.go:73:12
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*stack).AutoPop at gitee.com/u-language/u-language/ucom/ast2\expr3.go:395:19
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*stack).PopValue at gitee.com/u-language/u-language/ucom/ast2\expr3.go:262:42
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*stack).PopValue at gitee.com/u-language/u-language/ucom/ast2\expr3.go:303:66
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*stack).PopValue at gitee.com/u-language/u-language/ucom/ast2\expr3.go:348:19
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.(*stack).PushValue at gitee.com/u-language/u-language/ucom/ast2\expr3.go:254:14
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.newstack at gitee.com/u-language/u-language/ucom/ast2\parser.go:282:15
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.tocVarNode at gitee.com/u-language/u-language/ucom/ast2\type.go:141:13
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/ast2.utoCCall at gitee.com/u-language/u-language/ucom/ast2\type.go:782:14
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/astdata.Generate_method_symbol at gitee.com/u-language/u-language/ucom/ast2\type.go:1469:41
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/cast2.generateCFile at gitee.com/u-language/u-language/ucom/cast2\package.go:114:16
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/cast2.generateHeaderFile at gitee.com/u-language/u-language/ucom/cast2\utoc.go:41:20
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/cast2.nodeCmp at gitee.com/u-language/u-language/ucom/cast2\utoc.go:98:17
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/check3.CheckPackage at gitee.com/u-language/u-language/ucom/parser\buildmode2.go:118:21
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/check3.CheckTree at gitee.com/u-language/u-language/ucom/check3\package.go:11:12
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/check3.checkBoolExpr at gitee.com/u-language/u-language/ucom/check3\check3.go:730:15
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/check3.checkFunc at gitee.com/u-language/u-language/ucom/check3\check3.go:61:12
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/check3.check_selector_Left_right at gitee.com/u-language/u-language/ucom/check3\check3.go:555:50
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/check3.getFuncName at gitee.com/u-language/u-language/ucom/check3\check3.go:262:47
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/check3.retType at gitee.com/u-language/u-language/ucom/check3\check3.go:123:17
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/data.(*Slice[go.shape.interface { C(*strings.Builder); CDecl(*strings.Builder); String() string }]).Add at gitee.com/u-language/u-language/ucom/ast2\parser.go:380:19
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/data.(*Slice[go.shape.interface { C(*strings.Builder); CDecl(*strings.Builder); String() string }]).Add at gitee.com/u-language/u-language/ucom/ast2\parser.go:818:20
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/data.(*Slice[go.shape.interface { C(*strings.Builder); CDecl(*strings.Builder); String() string }]).Add at gitee.com/u-language/u-language/ucom/ast2\parser.go:984:20
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/internal/utils.FindU at gitee.com/u-language/u-language/ucom/parser\buildmode2.go:64:27
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/internal/utils.GeneratePackageSymbol at gitee.com/u-language/u-language/ucom/ast2\parser.go:366:42
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/internal/utils.GeneratePackageSymbol at gitee.com/u-language/u-language/ucom/cast2\utoc.go:56:47
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/internal/utils.ReadLine at gitee.com/u-language/u-language/ucom/internal/utils\Split.go:42:26
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/internal/utils.ReadLine at gitee.com/u-language/u-language/ucom/lex\lex.go:64:32
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex.(*Scan).parserToken at gitee.com/u-language/u-language/ucom/lex\scan.go:367:40
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex.autoAddToken at gitee.com/u-language/u-language/ucom/lex\scan.go:126:16
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex.autoAddToken at gitee.com/u-language/u-language/ucom/lex\scan.go:129:16
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex.autoAddToken at gitee.com/u-language/u-language/ucom/lex\scan.go:138:16
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex.autoAddToken at gitee.com/u-language/u-language/ucom/lex\scan.go:153:16
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex.autoAddToken at gitee.com/u-language/u-language/ucom/lex\scan.go:203:16
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex.autoAddToken at gitee.com/u-language/u-language/ucom/lex\scan.go:285:14
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex.autoAddToken at gitee.com/u-language/u-language/ucom/lex\scan.go:58:16
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex.autoAddToken at gitee.com/u-language/u-language/ucom/lex\scan.go:76:16
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex.scanMLCEnd at gitee.com/u-language/u-language/ucom/lex\lex.go:30:17
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\expr3.go:262:61
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\expr3.go:303:85
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\expr3.go:389:21
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\parser.go:244:18
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\parser.go:26:22
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\parser.go:26:62
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\parser.go:272:33
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\parser.go:295:19
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\parser.go:300:19
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\parser.go:332:39
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\parser.go:396:20
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\parser.go:442:18
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\parser.go:492:43
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\parser.go:495:20
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\parser.go:593:22
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\parser.go:593:43
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\parser.go:669:30
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\parser.go:707:21
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/lex2.(*FileToken).Next at gitee.com/u-language/u-language/ucom/ast2\parser.go:826:19
hot-budget check allows inlining for call gitee.com/u-language/u-language/ucom/parser.openfileAndStat at gitee.com/u-language/u-language/ucom/parser\test.go:46:35
hot-budget check allows inlining for call internal/poll.(*FD).destroy at internal/poll\fd_mutex.go:213:20
hot-budget check allows inlining for call internal/reflectlite.Swapper at sort\slice.go:23:29
hot-budget check allows inlining for call os.(*File).readdir at os\dir.go:98:33
hot-budget check allows inlining for call os.(*file).close at os\file_posix.go:25:21
hot-budget check allows inlining for call os.Open at gitee.com/u-language/u-language/ucom/parser\test.go:68:22
hot-budget check allows inlining for call os.OpenFile at os\file.go:309:17
hot-budget check allows inlining for call os.Stat at gitee.com/u-language/u-language/ucom/parser\parser.go:30:27
hot-budget check allows inlining for call os.openFileNolog at os\file.go:329:25
hot-budget check allows inlining for call path/filepath.Join at path/filepath\path.go:425:16
hot-budget check allows inlining for call path/filepath.WalkDir at gitee.com/u-language/u-language/ucom/internal/utils\utils.go:59:25
hot-budget check allows inlining for call path/filepath.join at path/filepath\path.go:225:13
hot-budget check allows inlining for call reflect.implements at reflect\value.go:3484:15
hot-budget check allows inlining for call runtime.(*activeSweep).end at runtime\mgcsweep.go:405:18
hot-budget check allows inlining for call runtime.(*fixalloc).alloc at runtime\mheap.go:1108:53
hot-budget check allows inlining for call runtime.(*gcControllerState).enlistWorker at runtime\mgcwork.go:304:28
hot-budget check allows inlining for call runtime.(*gcControllerState).update at runtime\mcache.go:212:21
hot-budget check allows inlining for call runtime.(*gcWork).init at runtime\mgcwork.go:207:9
hot-budget check allows inlining for call runtime.(*gcWork).tryGet at runtime\mgcmark.go:1170:18
hot-budget check allows inlining for call runtime.(*itabTableType).find at runtime\iface.go:55:15
hot-budget check allows inlining for call runtime.(*lfstack).push at runtime\mgcwork.go:420:16
hot-budget check allows inlining for call runtime.(*mcache).refill at runtime\malloc.go:855:11
hot-budget check allows inlining for call runtime.(*mcentral).uncacheSpan at runtime\mcache.go:159:43
hot-budget check allows inlining for call runtime.(*mheap).alloc at runtime\mcentral.go:246:19
hot-budget check allows inlining for call runtime.(*mheap).nextSpanForSweep at runtime\mgcsweep.go:373:31
hot-budget check allows inlining for call runtime.(*mspan).initHeapBits at runtime\mcentral.go:255:16
hot-budget check allows inlining for call runtime.(*mspan).nextFreeIndex at runtime\malloc.go:848:30
hot-budget check allows inlining for call runtime.(*mspan).refillAllocCache at runtime\mbitmap.go:182:21
hot-budget check allows inlining for call runtime.(*pallocBits).summarize at runtime\mpagealloc.go:425:31
hot-budget check allows inlining for call runtime.(*scavengerState).run at runtime\mgcscavenge.go:631:38
hot-budget check allows inlining for call runtime.(*spanSet).pop at runtime\mgcsweep.go:106:29
hot-budget check allows inlining for call runtime.(*spanSet).pop at runtime\mgcsweep.go:108:32
hot-budget check allows inlining for call runtime.(*spanSet).reset at runtime\mgcsweep.go:259:29
hot-budget check allows inlining for call runtime.casgstatus at runtime\mgcmark.go:569:12
hot-budget check allows inlining for call runtime.concatstrings at runtime\string.go:60:22
hot-budget check allows inlining for call runtime.copystack at runtime\stack.go:1112:11
hot-budget check allows inlining for call runtime.copystack at runtime\stack.go:1214:11
hot-budget check allows inlining for call runtime.findObject at runtime\mgcmark.go:1237:42
hot-budget check allows inlining for call runtime.forEachG at runtime\mgc.go:1591:10
hot-budget check allows inlining for call runtime.funcMaxSPDelta at runtime\stack.go:1081:32
hot-budget check allows inlining for call runtime.gcAssistAlloc1 at runtime\mgcmark.go:475:17
hot-budget check allows inlining for call runtime.getempty at runtime\mgcwork.go:439:16
hot-budget check allows inlining for call runtime.greyobject at runtime\mgcmark.go:1238:17
hot-budget check allows inlining for call runtime.growWork_faststr at runtime\map_faststr.go:227:19
hot-budget check allows inlining for call runtime.handoff at runtime\mgcwork.go:297:20
hot-budget check allows inlining for call runtime.mProf_FlushLocked at runtime\mprof.go:373:19
hot-budget check allows inlining for call runtime.mProf_Malloc at runtime\malloc.go:1280:14
hot-budget check allows inlining for call runtime.makeBucketArray at runtime\map.go:1051:45
hot-budget check allows inlining for call runtime.memclrHasPointers at runtime\map.go:371:21
hot-budget check allows inlining for call runtime.netpoll at runtime\proc.go:1327:18
hot-budget check allows inlining for call runtime.notewakeup at runtime\proc.go:1753:13
hot-budget check allows inlining for call runtime.pcvalue at runtime\symtab.go:1074:17
hot-budget check allows inlining for call runtime.pcvalue at runtime\symtab.go:1109:17
hot-budget check allows inlining for call runtime.pcvalue at runtime\symtab.go:1117:17
hot-budget check allows inlining for call runtime.preemptM at runtime\preempt.go:231:14
hot-budget check allows inlining for call runtime.putfull at runtime\mgcwork.go:446:9
hot-budget check allows inlining for call runtime.runSafePointFn at runtime\proc.go:2677:17
hot-budget check allows inlining for call runtime.runqgrab at runtime\proc.go:6192:15
hot-budget check allows inlining for call runtime.scanblock at runtime\mgcmark.go:284:11
hot-budget check allows inlining for call runtime.scanobject at runtime\mgcmark.go:1192:13
hot-budget check allows inlining for call runtime.semawakeup at runtime\lock_sema.go:161:13
hot-budget check allows inlining for call runtime.shrinkstack at runtime\mgcmark.go:775:14
hot-budget check allows inlining for call runtime.startm at runtime\proc.go:2532:8
hot-budget check allows inlining for call runtime.step at runtime\symtab.go:1091:15
hot-budget check allows inlining for call runtime.sweepone at runtime\mgcsweep.go:299:15
hot-budget check allows inlining for call runtime.trygetfull at runtime\mgcwork.go:216:21
hot-budget check allows inlining for call runtime.typedmemmove at runtime\map.go:680:14
hot-budget check allows inlining for call runtime.typehash at runtime\alg.go:130:23
hot-budget check allows inlining for call runtime.wakep at runtime\proc.go:3235:7
hot-budget check allows inlining for call runtime.wakep at runtime\proc.go:4242:9
hot-budget check allows inlining for call runtime.wbBufFlush at runtime\mgcmark.go:1174:15
hot-budget check allows inlining for call sort.Slice at gitee.com/u-language/u-language/ucom/cast2\utoc.go:97:12
hot-budget check allows inlining for call sort.insertionSort_func at sort\zsortfunc.go:73:22
hot-budget check allows inlining for call strings.Join at gitee.com/u-language/u-language/ucom/astdata\utils.go:12:21
hot-budget check allows inlining for call sync.(*Map).dirtyLocked at sync\map.go:239:17
hot-budget check allows inlining for call sync.(*Map).missLocked at sync\map.go:133:16
hot-budget check allows inlining for call sync.(*Pool).Get at gitee.com/u-language/u-language/ucom/ast2\expr3.go:66:19
hot-budget check allows inlining for call sync.(*Pool).Get at gitee.com/u-language/u-language/ucom/internal/utils\sync.go:26:19
hot-budget check allows inlining for call sync.(*Pool).Put at gitee.com/u-language/u-language/ucom/ast2\expr3.go:464:15
hot-budget check allows inlining for call sync.(*Pool).Put at gitee.com/u-language/u-language/ucom/internal/utils\pool.go:17:12
hot-budget check allows inlining for call sync.(*Pool).getSlow at sync\pool.go:140:17
hot-budget check allows inlining for call sync.(*Pool).pin at sync\pool.go:107:15
hot-budget check allows inlining for call sync.(*Pool).pin at sync\pool.go:131:17
hot-budget check allows inlining for call sync.(*poolChain).popHead at sync\pool.go:138:26
hot-budget check allows inlining for call sync.(*poolChain).popTail at sync\pool.go:163:30
hot-budget check allows inlining for call sync.(*poolChain).pushHead at sync\pool.go:111:20
hot-budget check allows inlining for call sync.(*poolDequeue).popHead at sync\poolqueue.go:261:26
hot-budget check allows inlining for call syscall.FullPath at os\types_windows.go:195:34
hot-budget check allows inlining for call syscall.GetConsoleMode at os\file_windows.go:46:28
hot-budget check allows inlining for call syscall.GetFileAttributesEx at os\stat_windows.go:39:35
hot-budget check allows inlining for call syscall.GetFileType at os\file_windows.go:49:35
hot-budget check allows inlining for call syscall.GetFullPathName at syscall\exec_windows.go:163:27
hot-budget check allows inlining for call syscall.UTF16FromString at syscall\syscall_windows.go:97:27
hot-budget check allows inlining for call syscall.UTF16PtrFromString at os\stat_windows.go:31:42
hot-budget check allows inlining for call syscall.UTF16PtrFromString at syscall\exec_windows.go:156:30
hot-budget check allows inlining for call unicode/utf8.appendRuneNonASCII at unicode/utf8\utf8.go:380:27

相关问题