bdecfcb5fc
I was profiling the cpu usage of go/printer's only benchmark, and found that token.File.Unpack was one of the top offenders. It was mainly the deferred unlock that took a big chunk of time, and to my surprise, reoving the use of defer helped significantly: name old time/op new time/op delta Print-16 5.61ms ± 2% 5.38ms ± 1% -4.04% (p=0.000 n=10+8) name old speed new speed delta Print-16 9.27MB/s ± 2% 9.64MB/s ± 1% +4.03% (p=0.000 n=9+8) name old alloc/op new alloc/op delta Print-16 332kB ± 0% 332kB ± 0% ~ (p=0.363 n=10+10) name old allocs/op new allocs/op delta Print-16 3.45k ± 0% 3.45k ± 0% ~ (all equal) It seems like #38471 is to blame, as the defer prevents Unlock from being inlined. Add a TODO as a reminder to come back here once the compiler issue is fixed. Change-Id: I5a1c6d36a8e8357435a305a1bc0970ee0358b08a Reviewed-on: https://go-review.googlesource.com/c/go/+/424920 Reviewed-by: Alan Donovan <adonovan@google.com> Run-TryBot: Daniel Martí <mvdan@mvdan.cc> Reviewed-by: Bryan Mills <bcmills@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> |
||
---|---|---|
.github | ||
api | ||
doc | ||
lib/time | ||
misc | ||
src | ||
test | ||
.gitattributes | ||
.gitignore | ||
codereview.cfg | ||
CONTRIBUTING.md | ||
LICENSE | ||
PATENTS | ||
README.md | ||
SECURITY.md |
The Go Programming Language
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Gopher image by Renee French, licensed under Creative Commons 3.0 Attributions license.
Our canonical Git repository is located at https://go.googlesource.com/go. There is a mirror of the repository at https://github.com/golang/go.
Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.
Download and Install
Binary Distributions
Official binary distributions are available at https://go.dev/dl/.
After downloading a binary release, visit https://go.dev/doc/install for installation instructions.
Install From Source
If a binary distribution is not available for your combination of operating system and architecture, visit https://go.dev/doc/install/source for source installation instructions.
Contributing
Go is the work of thousands of contributors. We appreciate your help!
To contribute, please read the contribution guidelines at https://go.dev/doc/contribute.
Note that the Go project uses the issue tracker for bug reports and proposals only. See https://go.dev/wiki/Questions for a list of places to ask questions about the Go language.