reflect: faster FieldByName, FieldByNameFunc
The old code was a depth first graph traversal that could, under the right conditions, end up re-exploring the same subgraphs multiple times, once for each way to arrive at that subgraph at a given depth. The new code uses a breadth first search to make sure that it only visits each reachable embedded struct once. Also add fast path for the trivial case. benchmark old ns/op new ns/op delta BenchmarkFieldByName1 1321 187 -85.84% BenchmarkFieldByName2 6118 5186 -15.23% BenchmarkFieldByName3 8218553 42112 -99.49% R=gri, r CC=golang-dev https://golang.org/cl/6458090
Showing
Please
register
or
sign in
to comment