blog/profiling-go-programs: move refs from codesite to GitHub

Updates golang/go#18907.

Change-Id: I1a36a07051d39a6501776b9570d5858a175d1205
Reviewed-on: https://go-review.googlesource.com/36215
Reviewed-by: Russ Cox <rsc@golang.org>
diff --git a/content/profiling-go-programs.article b/content/profiling-go-programs.article
index 0b74eee..db0c6fc 100644
--- a/content/profiling-go-programs.article
+++ b/content/profiling-go-programs.article
@@ -51,7 +51,7 @@
 	done
 	#
 
-We've taken [[http://code.google.com/p/multi-language-bench/][Hundt's benchmark programs]]
+We've taken [[https://github.com/hundt98847/multi-language-bench][Hundt's benchmark programs]]
 in C++ and Go, combined each into a single source file, and removed all but one
 line of output.
 We'll time the program using Linux's `time` utility with a format that shows user time,
@@ -125,7 +125,7 @@
 	(pprof)
 
 The `go tool pprof` program is a slight variant of
-[[https://code.google.com/p/gperftools/wiki/GooglePerformanceTools][Google's `pprof` C++ profiler]].
+[[https://github.com/gperftools/gperftools][Google's `pprof` C++ profiler]].
 The most important command is `topN`, which shows the top `N` samples in the profile:
 
 	(pprof) top10
@@ -265,7 +265,7 @@
 	16.55u 0.11s 16.69r 1321008kB ./havlak2
 	$ 
 
-(See the [[http://code.google.com/p/benchgraffiti/source/diff?name=34f7624bb2e2&r=240c155236f9&format=unidiff&path=/havlak/havlak.go][diff between `havlak1` and `havlak2`]])
+(See the [[https://github.com/rsc/benchgraffiti/commit/58ac27bcac3ffb553c29d0b3fb64745c91c95948][diff between `havlak1` and `havlak2`]])
 
 We can run the profiler again to confirm that `main.DFS` is no longer a significant
 part of the run time:
@@ -316,7 +316,7 @@
 	go build havlak3.go
 	./havlak3 -memprofile=havlak3.mprof
 	$ 
-(See the [[http://code.google.com/p/benchgraffiti/source/diff?name=240c155236f9&r=796913012f93&format=unidiff&path=/havlak/havlak.go][diff from havlak2]])
+(See the [[https://github.com/rsc/benchgraffiti/commit/b78dac106bea1eb3be6bb3ca5dba57c130268232][diff from havlak2]])
 
 We use `go tool pprof` exactly the same way. Now the samples we are examining are
 memory allocations, not clock ticks.
@@ -425,7 +425,7 @@
 	# of loops: 76000 (including 1 artificial root node)
 	11.84u 0.08s 11.94r 810416kB ./havlak4
 	$ 
-(See the [[http://code.google.com/p/benchgraffiti/source/diff?name=796913012f93&r=d856c2f698c1&format=unidiff&path=/havlak/havlak.go][diff from havlak3]])
+(See the [[https://github.com/rsc/benchgraffiti/commit/245d899f7b1a33b0c8148a4cd147cb3de5228c8a][diff from havlak3]])
 
 We're now at 2.11x faster than when we started. Let's look at a CPU profile again.
 
@@ -566,7 +566,7 @@
 	# of loops: 76000 (including 1 artificial root node)
 	8.03u 0.06s 8.11r 770352kB ./havlak5
 	$
-(See the [[http://code.google.com/p/benchgraffiti/source/diff?name=d856c2f698c1&r=5ce46b0ee1db&format=unidiff&path=/havlak/havlak.go][diff from havlak4]])
+(See the [[https://github.com/rsc/benchgraffiti/commit/2d41d6d16286b8146a3f697dd4074deac60d12a4][diff from havlak4]])
 
 There's more we can do to clean up the program and make it faster, but none of
 it requires profiling techniques that we haven't already shown.
@@ -575,7 +575,7 @@
 during that pass.
 Similarly, the loop graph storage can be reused on each iteration instead of reallocated.
 In addition to these performance changes, the
-[[http://code.google.com/p/benchgraffiti/source/browse/havlak/havlak6.go][final version]]
+[[https://github.com/rsc/benchgraffiti/blob/master/havlak/havlak6.go][final version]]
 is written using idiomatic Go style, using data structures and methods.
 The stylistic changes have only a minor effect on the run time: the algorithm and
 constraints are unchanged.
@@ -603,7 +603,7 @@
 program, which used inefficient data structures like `set`s where `vector`s would
 be more appropriate.
 As a sanity check, we translated the final Go program into
-[[http://code.google.com/p/benchgraffiti/source/browse/havlak/havlak6.cc][equivalent C++ code]].
+[[https://github.com/rsc/benchgraffiti/blob/master/havlak/havlak6.cc][equivalent C++ code]].
 Its execution time is similar to the Go program's:
 
 	$ make havlak6cc
@@ -620,8 +620,8 @@
 	 401 1220 9040 havlak6.cc
 	 461 1441 9467 havlak6.go
 	$
-(See [[http://code.google.com/p/benchgraffiti/source/browse/havlak/havlak6.cc][havlak6.cc]]
-and [[http://code.google.com/p/benchgraffiti/source/browse/havlak/havlak6.go][havlak6.go]])
+(See [[https://github.com/rsc/benchgraffiti/blob/master/havlak/havlak6.cc][havlak6.cc]]
+and [[https://github.com/rsc/benchgraffiti/blob/master/havlak/havlak6.go][havlak6.go]])
 
 Benchmarks are only as good as the programs they measure.
 We used `go tool pprof` to study an inefficient Go program and then to improve its
@@ -631,7 +631,7 @@
 by inner loops.
 
 The program sources, Linux x86-64 binaries, and profiles used to write this post
-are available in the [[http://code.google.com/p/benchgraffiti/][benchgraffiti project on Google Code]].
+are available in the [[https://github.com/rsc/benchgraffiti/][benchgraffiti project on GitHub]].
 
 As mentioned above, [[http://golang.org/cmd/go/#Test_packages][`go test`]] includes
 these profiling flags already: define a