damccorm commented on code in PR #17475:
URL: https://github.com/apache/beam/pull/17475#discussion_r862276118
##########
sdks/go/pkg/beam/core/runtime/exec/fn_arity.tmpl:
##########
@@ -30,7 +30,7 @@ import (
func (n *invoker) initCall() {
switch fn := n.fn.Fn.(type) {
{{range $out := upto 5}}
-{{range $in := upto 9}}
+{{range $in := upto 10}}
Review Comment:
Yeah, that's a good call - there was not a clear benefit to doing this. I
tried the following benchmarks:
```
func BenchmarkInvokeWith9Args_Call9x4(b *testing.B) {
fn, _ := funcx.New(reflectx.MakeFunc9x4(func(a1 typex.EventTime, a2
bool, a3 string, a4 int, a5 bool, a6 int, a7 string, a8 bool, a9 int) (int,
bool, string, error) {
return a4 + a6 + a9, a2 && a5 && a8, a3 + a7, nil
}))
args := []interface{}{mtime.ZeroTimestamp.Add(2 * time.Millisecond),
true, "hello", 1, true, 3, "world", false, 4}
f := fn.Fn.(reflectx.Func9x4)
for n := 0; n < b.N; n++ {
f.Call9x4(args[0], args[1], args[2], args[3], args[4], args[5],
args[6], args[7], args[8])
}
}
func BenchmarkInvokeWith9Args_Call(b *testing.B) {
fn, _ := funcx.New(reflectx.MakeFunc(func(a1 typex.EventTime, a2 bool,
a3 string, a4 int, a5 bool, a6 int, a7 string, a8 bool, a9 int) (int, bool,
string, error) {
return a4 + a6 + a9, a2 && a5 && a8, a3 + a7, nil
}))
args := []interface{}{mtime.ZeroTimestamp.Add(2 * time.Millisecond),
true, "hello", 1, true, 3, "world", false, 4}
f := fn.Fn
for n := 0; n < b.N; n++ {
f.Call(args)
}
}
```
with the result:
```
BenchmarkInvokeWith9Args_Call9x4-16 722283 1577 ns/op
BenchmarkInvokeWith9Args_Call-16 805590 1447 ns/op
```
So the normal call is actually more performant. It is probably worth
revisiting this more systematically for lower arities as well, but I think that
should fall outside the scope of this PR. For the moment, I've lowered it back
down to 9
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]