• Russ Cox's avatar
    reflect: faster FieldByName, FieldByNameFunc · 5e3224ce
    Russ Cox authored
    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
    5e3224ce
Name
Last commit
Last update
..
cmd Loading commit data...
lib9 Loading commit data...
libbio Loading commit data...
libmach Loading commit data...
pkg Loading commit data...
Make.dist Loading commit data...
all.bash Loading commit data...
all.bat Loading commit data...
all.rc Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
run.bash Loading commit data...
run.bat Loading commit data...
run.rc Loading commit data...
sudo.bash Loading commit data...