1
0
mirror of https://github.com/golang/go synced 2024-11-19 02:04:42 -07:00
The Go programming language
Go to file
Dmitriy Vyukov e0df11d57e runtime: implement transfer cache
Currently we do the following dance after sweeping a span:
1. lock mcentral
2. remove the span from a list
3. unlock mcentral
4. unmark span
5. lock mheap
6. insert the span into heap
7. unlock mheap
8. lock mcentral
9. observe empty list
10. unlock mcentral
11. lock mheap
12. grab the span
13. unlock mheap
14. mark span
15. lock mcentral
16. insert the span into empty list
17. unlock mcentral

This change short-circuits this sequence to nothing,
that is, we just cache and use the span after sweeping.

This gives us functionality similar (even better) to tcmalloc's transfer cache.

benchmark            old ns/op     new ns/op     delta
BenchmarkMalloc8     22.2          19.5          -12.16%
BenchmarkMalloc16    31.0          26.6          -14.19%

LGTM=khr
R=golang-codereviews, khr
CC=golang-codereviews, rlh, rsc
https://golang.org/cl/119550043
2014-08-18 16:52:31 +04:00
api undo CL 102610045 / 7244ce3ae9db 2014-07-30 09:47:39 +09:00
doc doc: make it point to correct go1.3.1 change history 2014-08-15 08:46:16 +09:00
include liblink, cmd/dist, cmd/5l: introduce %^ and move C_* constants. 2014-08-06 00:31:22 -04:00
lib codereview: do not hit upload_complete on first patch 2014-08-06 16:12:24 -04:00
misc misc/nacl: add debugging instructions 2014-08-15 20:51:44 +04:00
src runtime: implement transfer cache 2014-08-18 16:52:31 +04:00
test cmd/gc: disallow pointer constants 2014-08-15 11:33:31 -07:00
.hgignore lib9: enable on Plan 9 2014-02-13 20:06:41 +01:00
.hgtags tag go1.3.1 2014-08-13 14:54:54 +10:00
AUTHORS A+C: Henning Schmiedehausen (individual CLA) 2014-08-15 15:18:39 -07:00
CONTRIBUTORS A+C: Henning Schmiedehausen (individual CLA) 2014-08-15 15:18:39 -07:00
favicon.ico
LICENSE
PATENTS
README README: Fix installation instructions 2013-11-20 13:47:37 -08:00
robots.txt

This is the source code repository for the Go programming language.  

For documentation about how to install and use Go,
visit http://golang.org/ or load doc/install-source.html
in your web browser.

After installing Go, you can view a nicely formatted
doc/install-source.html by running godoc --http=:6060
and then visiting http://localhost:6060/doc/install/source.

Unless otherwise noted, the Go source files are distributed
under the BSD-style license found in the LICENSE file.

--

Binary Distribution Notes

If you have just untarred a binary Go distribution, you need to set
the environment variable $GOROOT to the full path of the go
directory (the one containing this README).  You can omit the
variable if you unpack it into /usr/local/go, or if you rebuild
from sources by running all.bash (see doc/install.html).
You should also add the Go binary directory $GOROOT/bin
to your shell's path.

For example, if you extracted the tar file into $HOME/go, you might
put the following in your .profile:

    export GOROOT=$HOME/go
    export PATH=$PATH:$GOROOT/bin

See doc/install.html for more details.