Take the loop and put it inside the function call. Don't make function calls in the body of a hot loop, take advantage of the loop optimizations in the runtime and your cpu cache.
On Sunday, October 8, 2017 at 3:57:04 AM UTC-7, Zack Scholl wrote: > > Why is it that when I a method on an struct pointer, like > > func (s *Object) process(inputs []byte) { > for _, i := range inputs { > // Lots of code > } > } > > it will slow down *a lot* if I move // Lots of code to its own function? > I.e. I reorganize the above program two use two methods, > > func (s *Object) process(inputs []byte) { > for _, i := range inputs { > processInput(i) > } > } > > func (s *Object) processInput(i byte) { > // Lots of code > } > > This new code runs 30% slower now! > > Why? > > This matters because I'm in a situation in *pluck* where I need // Lots > of code in two places. You can reproduce this in *pluck* by running > > > go get -u github.com/schollz/pluck > cd $GOPATH/src/github.com/schollz/pluck/pluck > git checkout ef1004f && go test -bench=Stream -run=z > git checkout 76c4e96 && go test -bench=Stream -run=z > git diff 76c4e96 ef1004f # shows that I replace lots of code with one > function > > > > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.