1
0
mirror of https://github.com/golang/go synced 2024-11-05 16:06:10 -07:00
go/src/reflect
Michael Munday 3436f0776f reflect, runtime: optimize Value.Call on s390x and add benchmark
Use an MVC loop to copy arguments in runtime.call* rather than copying
bytes individually.

I've added the benchmark CallArgCopy to test the speed of Value.Call
for various argument sizes.

name                    old speed      new speed       delta
CallArgCopy/size=128     439MB/s ± 1%    582MB/s ± 1%   +32.41%  (p=0.000 n=10+10)
CallArgCopy/size=256     695MB/s ± 1%   1172MB/s ± 1%   +68.67%  (p=0.000 n=10+10)
CallArgCopy/size=1024    573MB/s ± 8%   4175MB/s ± 2%  +628.11%  (p=0.000 n=10+10)
CallArgCopy/size=4096   1.46GB/s ± 2%  10.19GB/s ± 1%  +600.52%  (p=0.000 n=10+10)
CallArgCopy/size=65536  1.51GB/s ± 0%  12.30GB/s ± 1%  +716.30%   (p=0.000 n=9+10)

Change-Id: I87dae4809330e7964f6cb4a9e40e5b3254dd519d
Reviewed-on: https://go-review.googlesource.com/28096
Run-TryBot: Michael Munday <munday@ca.ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Bill O'Farrell <billotosyr@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-09-27 16:00:19 +00:00
..
all_test.go reflect, runtime: optimize Value.Call on s390x and add benchmark 2016-09-27 16:00:19 +00:00
asm_386.s
asm_amd64.s
asm_amd64p32.s
asm_arm64.s
asm_arm.s
asm_mips64x.s
asm_ppc64x.s
asm_s390x.s
deepequal.go
example_test.go
export_test.go runtime: tell race detector about reflectOffs.lock 2016-05-26 14:43:27 +00:00
makefunc.go
set_test.go
tostring_test.go
type.go reflect: update location of vet tool in comment 2016-09-09 15:02:46 +00:00
value.go cmd/compile, etc: use name offset in method tables 2016-04-18 09:12:41 +00:00