diff options
| author | Keith Randall <khr@golang.org> | 2017-03-24 14:03:15 -0700 |
|---|---|---|
| committer | Keith Randall <khr@golang.org> | 2017-03-24 23:03:09 +0000 |
| commit | e67d881bc3708d38fbe485d2264f38a699ce11fd (patch) | |
| tree | c118cc7dfd2796046fd50852bc14856b37f16d65 /src/runtime/runtime_test.go | |
| parent | c026c37f33c6037dcf71e16a1e79f78f3b5165c4 (diff) | |
| download | go-e67d881bc3708d38fbe485d2264f38a699ce11fd.tar.xz | |
cmd/compile: simplify efaceeq and ifaceeq
Clean up code that does interface equality. Avoid doing checks
in efaceeq/ifaceeq that we already did before calling those routines.
No noticeable performance changes for existing benchmarks.
name old time/op new time/op delta
EfaceCmpDiff-8 604ns ± 1% 553ns ± 1% -8.41% (p=0.000 n=9+10)
Fixes #18618
Change-Id: I3bd46db82b96494873045bc3300c56400bc582eb
Reviewed-on: https://go-review.googlesource.com/38606
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: David Chase <drchase@google.com>
Diffstat (limited to 'src/runtime/runtime_test.go')
| -rw-r--r-- | src/runtime/runtime_test.go | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/runtime/runtime_test.go b/src/runtime/runtime_test.go index 9febbe621d..666bc0a546 100644 --- a/src/runtime/runtime_test.go +++ b/src/runtime/runtime_test.go @@ -50,6 +50,23 @@ func BenchmarkIfaceCmpNil100(b *testing.B) { } } +var efaceCmp1 interface{} +var efaceCmp2 interface{} + +func BenchmarkEfaceCmpDiff(b *testing.B) { + x := 5 + efaceCmp1 = &x + y := 6 + efaceCmp2 = &y + for i := 0; i < b.N; i++ { + for j := 0; j < 100; j++ { + if efaceCmp1 == efaceCmp2 { + b.Fatal("bad comparison") + } + } + } +} + func BenchmarkDefer(b *testing.B) { for i := 0; i < b.N; i++ { defer1() |
