internal/regtest/bench: fix BenchmarkRename and add more benchmark tests for gopls

Change-Id: I8863f3f5b5a50b92a3e844b4fec1902bda1061ce
Reviewed-on: https://go-review.googlesource.com/c/tools/+/461802
Reviewed-by: Robert Findley <rfindley@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Dylan Le <dungtuanle@google.com>
diff --git a/gopls/internal/regtest/bench/editor_features_test.go b/gopls/internal/regtest/bench/editor_features_test.go
index 92df344..bba6baa 100644
--- a/gopls/internal/regtest/bench/editor_features_test.go
+++ b/gopls/internal/regtest/bench/editor_features_test.go
@@ -47,9 +47,37 @@
 
 	b.ResetTimer()
 
-	for i := 0; i < b.N; i++ {
+	for i := 1; i < b.N; i++ {
 		pos := env.RegexpSearch("internal/imports/mod.go", "gopathwalk")
 		newName := fmt.Sprintf("%s%d", "gopathwalk", i)
 		env.Rename("internal/imports/mod.go", pos, newName)
 	}
 }
+
+func BenchmarkFindAllImplementations(b *testing.B) {
+	env := benchmarkEnv(b)
+
+	env.OpenFile("internal/imports/mod.go")
+	pos := env.RegexpSearch("internal/imports/mod.go", "initAllMods")
+	env.Await(env.DoneWithOpen())
+
+	b.ResetTimer()
+
+	for i := 0; i < b.N; i++ {
+		env.Implementations("internal/imports/mod.go", pos)
+	}
+}
+
+func BenchmarkHover(b *testing.B) {
+	env := benchmarkEnv(b)
+
+	env.OpenFile("internal/imports/mod.go")
+	pos := env.RegexpSearch("internal/imports/mod.go", "bytes")
+	env.Await(env.DoneWithOpen())
+
+	b.ResetTimer()
+
+	for i := 0; i < b.N; i++ {
+		env.Hover("internal/imports/mod.go", pos)
+	}
+}