mirror of
https://github.com/golang/go
synced 2024-10-04 04:31:21 -06:00
5e3224ce79
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 |
||
---|---|---|
.. | ||
all_test.go | ||
deepequal.go | ||
set_test.go | ||
tostring_test.go | ||
type.go | ||
value.go |