slices: improve the performance of Equal

Although it does an additional index operation, but it avoids the value copy of the range loop,
and it will has a better performance if E is a large structure.

Compares two int slices, the slices length are 10:
name                old time/op  new time/op  delta
Equal_WithIntSlices  5.80ns ± 0%  5.80ns ± 1%   ~     (p=0.889 n=14+15)

Compares two string slices, the slices length are 10:
name                   old time/op  new time/op  delta
Equal_WithStringSlices  17.6ns ± 1%  16.6ns ± 0%  -5.61%  (p=0.000 n=15+15)

Compares two runtime.MemStats slices, the slices length are 10:
name                        old time/op  new time/op  delta
Equal_WithLagerStructSlices  4.46µs ± 0%  1.53µs ± 1%  -65.67%  (p=0.000 n=15+15)

Change-Id: I654b4fd4d7c6c3e233e8ee963e0c510e185d398b
GitHub-Last-Rev: 274949314fd4fdfe9074d28ab959caaeb83567cb
GitHub-Pull-Request: golang/exp#24
Reviewed-on: https://go-review.googlesource.com/c/exp/+/373394
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Trust: Dmitri Shuralyov <dmitshur@golang.org>
diff --git a/slices/slices.go b/slices/slices.go
index c646da5..7fe3412 100644
--- a/slices/slices.go
+++ b/slices/slices.go
@@ -18,9 +18,8 @@
 	if len(s1) != len(s2) {
 		return false
 	}
-	for i, v1 := range s1 {
-		v2 := s2[i]
-		if v1 != v2 {
+	for i := range s1 {
+		if s1[i] != s2[i] {
 			return false
 		}
 	}