math/rand: minor optimization to Perm
Instead of writing out 0..n and then reading it back, just use i when it is needed. Wikipedia calls this the "inside-out" implementation: http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle This yields identical values to the previous implementation, given the same seed. (Note that the output from Example_rand is unchanged.) 2.8 GHz Intel Core i7, results very stable: benchmark old ns/op new ns/op delta BenchmarkPerm3 138 136 -1.45% BenchmarkPerm30 825 803 -2.67% Stock Raspberry Pi, minimum improvement out of three runs: benchmark old ns/op new ns/op delta BenchmarkPerm3 5774 5664 -1.91% BenchmarkPerm30 32582 29381 -9.82% R=golang-dev, dave, mtj, adg CC=golang-dev https://golang.org/cl/21030043
Showing
Please
register
or
sign in
to comment