1
0
mirror of https://github.com/golang/go synced 2024-11-18 17:54:57 -07:00
go/cmd/guru
Josh Bleecher Snyder d4c6246f3e cmd/guru: parallelize loop in globalReferrersPkgLevel
This change parallelizes the outer loop in globalReferrersPkgLevel,
which loops over packages to inspect.

There is also an easily parallelizable inner loop.
However, parallelizing it adds complication
(deffiles needs a mutex, inQueryPackage requires a wait group)
and offers only a 2% speed-up.

Benchmarks for this change, looking for encoding/json.MarshalIndent:

name       old time/op       new time/op       delta
Referrers        5.31s ± 2%        4.67s ± 3%  -11.95%  (p=0.000 n=10+10)

name       old user-time/op  new user-time/op  delta
Referrers        15.9s ± 2%        16.5s ± 3%   +3.71%  (p=0.000 n=10+10)

name       old sys-time/op   new sys-time/op   delta
Referrers        15.7s ± 3%        16.1s ± 3%   +2.73%  (p=0.011 n=10+10)


Fixes golang/go#24272
Updates golang/go#25017


This work supported by Sourcegraph.

Change-Id: I5dcda9017103cdff59d0ffdf5e87d2c2c955a33a
Reviewed-on: https://go-review.googlesource.com/108878
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
2018-05-01 18:27:15 +00:00
..
serial cmd/guru: support streaming plain and -json output 2016-04-11 19:51:55 +00:00
testdata/src cmd/guru: always import tests in initial referrers import 2018-04-23 20:00:06 +00:00
callees.go x/tools/cmd/guru: gofmt -s -w 2017-02-15 21:41:53 +00:00
callers.go cmd/guru: add workaround to handle inconsistency between go/types and gc 2016-11-23 20:09:00 +00:00
callstack.go cmd/guru: add workaround to handle inconsistency between go/types and gc 2016-11-23 20:09:00 +00:00
definition.go cmd/guru: revert support for Go 1.8 aliases 2016-11-04 21:18:07 +00:00
describe.go x/tools: support Go 1.9 type aliases 2017-02-13 21:46:59 +00:00
freevars.go cmd/guru: support streaming plain and -json output 2016-04-11 19:51:55 +00:00
guru_test.go cmd/guru: make tests granular and parallel 2018-04-23 19:59:51 +00:00
guru.go cmd/guru: parallelize loop in globalReferrersPkgLevel 2018-05-01 18:27:15 +00:00
implements.go x/tools: support Go 1.9 type aliases 2017-02-13 21:46:59 +00:00
isAlias18.go x/tools: support Go 1.9 type aliases 2017-02-13 21:46:59 +00:00
isAlias19.go x/tools: support Go 1.9 type aliases 2017-02-13 21:46:59 +00:00
main.go cmd/guru: update link to documentation 2016-07-08 22:10:47 +00:00
peers.go cmd/guru: add workaround to handle inconsistency between go/types and gc 2016-11-23 20:09:00 +00:00
pointsto.go cmd/guru: add workaround to handle inconsistency between go/types and gc 2016-11-23 20:09:00 +00:00
pos.go cmd/guru: fix typo of 'hyphen' to rename to 'comma' 2017-01-25 19:35:15 +00:00
referrers.go cmd/guru: parallelize loop in globalReferrersPkgLevel 2018-05-01 18:27:15 +00:00
unit_test.go go/buildutil, cmd/guru: resolve symlinks in filenames through build.Context 2016-12-06 21:45:43 +00:00
what.go cmd/guru: report 'whicherrs' in modes of 'what' query 2017-03-04 02:31:33 +00:00
whicherrs.go x/tools: support Go 1.9 type aliases 2017-02-13 21:46:59 +00:00