1
0
mirror of https://github.com/golang/go synced 2024-11-24 06:40:17 -07:00
The Go programming language
Go to file
champly ca7c6ef33d runtime/chan.go: improve closed channel receive performance
Use this benchmark ut:

```go
func BenchmarkReceiveDataFromClosedChan(b *testing.B) {
	count := b.N
	ch := make(chan struct{}, count)
	for i := 0; i < count; i++ {
		ch <- struct{}{}
	}

	b.ResetTimer()
	for range ch {
	}
}
```

Benchmark 10 times(`go test -bench=.`), and then use `benchstat` got the result:

```shell
name                         old time/op  new time/op  delta
ReceiveDataFromClosedChan-5  12.0ns ± 1%  11.4ns ± 0%  -5.54%  (p=0.000 n=10+8)
```

Fixes:  #52067

Change-Id: I8db398cc8c04a46cb66ffb6768ab72a87903812f
GitHub-Last-Rev: 1e0142416f
GitHub-Pull-Request: golang/go#52068
Reviewed-on: https://go-review.googlesource.com/c/go/+/396884
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
Run-TryBot: Keith Randall <khr@google.com>
Auto-Submit: Keith Randall <khr@google.com>
2022-04-12 02:18:23 +00:00
.github .github: remove duplicate security link 2022-01-07 17:55:09 +00:00
api go/doc: use go/doc/comment 2022-04-11 16:31:52 +00:00
doc doc/go1.19: use the right package error.Is arguments 2022-04-07 20:39:32 +00:00
lib/time lib/time, time/tzdata: update to 2021e 2021-11-11 05:16:39 +00:00
misc all: gofmt main repo 2022-04-11 16:34:30 +00:00
src runtime/chan.go: improve closed channel receive performance 2022-04-12 02:18:23 +00:00
test cmd/compile: add a test case and some comments for deadlock on syntax error 2022-04-12 01:18:27 +00:00
.gitattributes
.gitignore
AUTHORS A+C: add Wen Yang (individual CLA) 2022-04-11 22:24:03 +00:00
codereview.cfg
CONTRIBUTING.md
CONTRIBUTORS A+C: add Wen Yang (individual CLA) 2022-04-11 22:24:03 +00:00
LICENSE
PATENTS
README.md README.md: update links to go.dev 2022-03-20 16:05:03 +00:00
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 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://golang.org/wiki/Questions for a list of places to ask questions about the Go language.