Skip to content

runtime: improve interface equality check performance #6105

@ugorji

Description

@ugorji
Interface equality check is expensive compared to integer comparison check.

In the benchmark, I compare two integers. I then wrap them in interface{} and compare
them.

As interface{}, the comparison check takes over 20X the time taken by just plain
comparison check.

See http://play.golang.org/p/1evwkTYYlB

Results:
BenchmarkIntfEqual  100000000            14.5 ns/op
BenchmarkReflectTypeEqual   100000000    14.4 ns/op
BenchmarkPtrEqual   2000000000           1.06 ns/op
BenchmarkIntEqual   2000000000           0.70 ns/op
BenchmarkIntMapAccess   500000000            5.22 ns/op
BenchmarkReflectTypeMapAccess   50000000     57.6 ns/op
BenchmarkIntMapAccessMiss   100000000           16.4 ns/op
BenchmarkReflectTypeMapAccessMiss   50000000    58.3 ns/op

Which compiler are you using (5g, 6g, 8g, gccgo)?
6g

Which operating system are you using?
Linux 3.8.0-27-generic #40-Ubuntu SMP Tue Jul 9 00:17:05 UTC 2013 x86_64 x86_64 x86_64
GNU/Linux

Which version are you using?  (run 'go version')
go version devel +21ae2c5817da Fri Aug 09 23:23:34 2013 +1000 linux/amd64


Please provide any additional information below.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions