-
Notifications
You must be signed in to change notification settings - Fork 18k
reflect: cache IsVariadic calls in Call #43475
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This PR (HEAD: 659bc04) has been imported to Gerrit for code review. Please visit https://go-review.googlesource.com/c/go/+/281252 to see it. Tip: You can toggle comments from me using the |
Message from Brad Fitzpatrick: Patch Set 1: Run-TryBot+1 Trust+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/281252. |
Message from Go Bot: Patch Set 1: TryBots beginning. Status page: https://farmer.golang.org/try?commit=3d4c37e4 Please don’t reply on this GitHub thread. Visit golang.org/cl/281252. |
Message from Go Bot: Patch Set 1: TryBot-Result+1 TryBots are happy. Please don’t reply on this GitHub thread. Visit golang.org/cl/281252. |
Message from Keith Randall: Patch Set 1: Code-Review+2 (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/281252. |
Message from Ignacio Hagopian: Patch Set 1: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/281252. |
This PR (HEAD: 0e700c2) has been imported to Gerrit for code review. Please visit https://go-review.googlesource.com/c/go/+/281252 to see it. Tip: You can toggle comments from me using the |
Message from Ignacio Hagopian: Patch Set 2: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/281252. |
Message from Daniel Martí: Patch Set 2: Code-Review+2 (2 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/281252. |
Message from Ignacio Hagopian: Patch Set 2: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/281252. |
Message from Daniel Martí: Patch Set 2: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/281252. |
Message from Ignacio Hagopian: Patch Set 3: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/281252. |
Signed-off-by: Ignacio Hagopian <[email protected]>
These calls are cachable, so do that in order to avoid doing extra work. This opportunity was discovered while taking a look at a CPU profile while investigating golang#7818. I added a BenchmarkCallMethod which is similar to BechmarkCall but for a method receiver. Benchmark results, including the new BenchmarkCallMethod: name old time/op new time/op delta Call-16 22.0ns ±19% 20.2ns ±17% -8.08% (p=0.000 n=40+40) CallMethod-16 100ns ± 3% 91ns ± 2% -9.13% (p=0.000 n=40+39) CallArgCopy/size=128-16 15.7ns ± 1% 14.3ns ± 4% -8.98% (p=0.000 n=38+37) CallArgCopy/size=256-16 15.9ns ± 3% 15.0ns ± 5% -6.12% (p=0.000 n=39+39) CallArgCopy/size=1024-16 18.8ns ± 6% 17.1ns ± 6% -9.03% (p=0.000 n=38+38) CallArgCopy/size=4096-16 26.6ns ± 3% 25.2ns ± 4% -5.19% (p=0.000 n=39+40) CallArgCopy/size=65536-16 379ns ± 3% 371ns ± 5% -2.11% (p=0.000 n=39+40) name old alloc/op new alloc/op delta Call-16 0.00B 0.00B ~ (all equal) CallMethod-16 0.00B 0.00B ~ (all equal) name old allocs/op new allocs/op delta Call-16 0.00 0.00 ~ (all equal) CallMethod-16 0.00 0.00 ~ (all equal) name old speed new speed delta CallArgCopy/size=128-16 8.13GB/s ± 1% 8.92GB/s ± 4% +9.77% (p=0.000 n=38+38) CallArgCopy/size=256-16 16.1GB/s ± 3% 17.1GB/s ± 5% +6.56% (p=0.000 n=39+39) CallArgCopy/size=1024-16 54.6GB/s ± 6% 60.1GB/s ± 5% +9.93% (p=0.000 n=38+38) CallArgCopy/size=4096-16 154GB/s ± 5% 163GB/s ± 4% +5.63% (p=0.000 n=40+40) CallArgCopy/size=65536-16 173GB/s ± 3% 177GB/s ± 5% +2.18% (p=0.000 n=39+40) Updates golang#7818. Signed-off-by: Ignacio Hagopian <[email protected]>
Signed-off-by: Ignacio Hagopian <[email protected]>
0e700c2
to
9bbaa18
Compare
This PR (HEAD: 9bbaa18) has been imported to Gerrit for code review. Please visit https://go-review.googlesource.com/c/go/+/281252 to see it. Tip: You can toggle comments from me using the |
Message from Daniel Martí: Patch Set 4: Run-TryBot+1 Code-Review+2 Trust+1 (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/281252. |
Message from Go Bot: Patch Set 4: TryBots beginning. Status page: https://farmer.golang.org/try?commit=d7b84779 Please don’t reply on this GitHub thread. Visit golang.org/cl/281252. |
Message from Daniel Martí: Patch Set 5: Run-TryBot+1 Code-Review+2 Trust+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/281252. |
Message from Go Bot: Patch Set 5: TryBots beginning. Status page: https://farmer.golang.org/try?commit=2cc4d84a Please don’t reply on this GitHub thread. Visit golang.org/cl/281252. |
These calls are cacheable, so do that to avoid doing extra work. This opportunity was discovered while taking a look at a CPU profile while investigating #7818. I added a BenchmarkCallMethod, which is similar to BechmarkCall but for a method receiver. Benchmark results, including the new BenchmarkCallMethod: name old time/op new time/op delta Call-16 22.0ns ±19% 20.2ns ±17% -8.08% (p=0.000 n=40+40) CallMethod-16 100ns ± 3% 91ns ± 2% -9.13% (p=0.000 n=40+39) CallArgCopy/size=128-16 15.7ns ± 1% 14.3ns ± 4% -8.98% (p=0.000 n=38+37) CallArgCopy/size=256-16 15.9ns ± 3% 15.0ns ± 5% -6.12% (p=0.000 n=39+39) CallArgCopy/size=1024-16 18.8ns ± 6% 17.1ns ± 6% -9.03% (p=0.000 n=38+38) CallArgCopy/size=4096-16 26.6ns ± 3% 25.2ns ± 4% -5.19% (p=0.000 n=39+40) CallArgCopy/size=65536-16 379ns ± 3% 371ns ± 5% -2.11% (p=0.000 n=39+40) name old alloc/op new alloc/op delta Call-16 0.00B 0.00B ~ (all equal) CallMethod-16 0.00B 0.00B ~ (all equal) name old allocs/op new allocs/op delta Call-16 0.00 0.00 ~ (all equal) CallMethod-16 0.00 0.00 ~ (all equal) name old speed new speed delta CallArgCopy/size=128-16 8.13GB/s ± 1% 8.92GB/s ± 4% +9.77% (p=0.000 n=38+38) CallArgCopy/size=256-16 16.1GB/s ± 3% 17.1GB/s ± 5% +6.56% (p=0.000 n=39+39) CallArgCopy/size=1024-16 54.6GB/s ± 6% 60.1GB/s ± 5% +9.93% (p=0.000 n=38+38) CallArgCopy/size=4096-16 154GB/s ± 5% 163GB/s ± 4% +5.63% (p=0.000 n=40+40) CallArgCopy/size=65536-16 173GB/s ± 3% 177GB/s ± 5% +2.18% (p=0.000 n=39+40) Updates #7818. Change-Id: I94f88811ea9faf3dc2543984a13b360b5db66a4b GitHub-Last-Rev: 9bbaa18 GitHub-Pull-Request: #43475 Reviewed-on: https://go-review.googlesource.com/c/go/+/281252 Reviewed-by: Daniel Martí <[email protected]> Reviewed-by: Keith Randall <[email protected]> Trust: Daniel Martí <[email protected]> Trust: Brad Fitzpatrick <[email protected]> Run-TryBot: Daniel Martí <[email protected]> TryBot-Result: Go Bot <[email protected]>
Message from Go Bot: Patch Set 5: TryBot-Result+1 TryBots are happy. Please don’t reply on this GitHub thread. Visit golang.org/cl/281252. |
This PR is being closed because golang.org/cl/281252 has been merged. |
These calls are cacheable, so do that to avoid doing extra work.
This opportunity was discovered while taking a look at a CPU profile
while investigating #7818.
I added a BenchmarkCallMethod, which is similar to BechmarkCall but
for a method receiver.
Benchmark results, including the new BenchmarkCallMethod:
Updates #7818.