Falling back to comparing Value.ID during scheduling is undesirable: Not only are we simply hoping for a good outcome, but the decision we make will be easily perturbed by other compiler changes, leading to random fluctuations. This change adds another decision point to the scheduler by scheduling Values with many uses earlier. Values with fewer uses are less likely to be spilled for other reasons, so we should issue them as late as possible in the hope of avoiding a spill. This reduces the number of Value ID comparisons in schedule while running make.bash from 1,000,844 to 542,442. As you would expect, this changes a lot of functions, but the overall trend is positive: file before after Δ % api 5237184 5233088 -4096 -0.078% compile 19926480 19918288 -8192 -0.041% cover 5281816 5277720 -4096 -0.078% dist 3711608 3707512 -4096 -0.110% total 113588440 113567960 -20480 -0.018% Change-Id: Ic99ebc4c614d4ae3807ce44473ec6b04684388ec Reviewed-on: https://go-review.googlesource.com/c/go/+/229798 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org> |
||
|---|---|---|
| .github | ||
| api | ||
| doc | ||
| lib/time | ||
| misc | ||
| src | ||
| test | ||
| .gitattributes | ||
| .gitignore | ||
| AUTHORS | ||
| CONTRIBUTING.md | ||
| CONTRIBUTORS | ||
| LICENSE | ||
| PATENTS | ||
| README.md | ||
| SECURITY.md | ||
| favicon.ico | ||
| robots.txt | ||
README.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://golang.org/dl/.
After downloading a binary release, visit https://golang.org/doc/install or load doc/install.html in your web browser for installation instructions.
Install From Source
If a binary distribution is not available for your combination of operating system and architecture, visit https://golang.org/doc/install/source or load doc/install-source.html in your web browser for source installation instructions.
Contributing
Go is the work of thousands of contributors. We appreciate your help!
To contribute, please read the contribution guidelines: https://golang.org/doc/contribute.html
Note that the Go project uses the issue tracker for bug reports and proposals only. See https://golang.org/wiki/Questions for a list of places to ask questions about the Go language.