• 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
api Loading commit data...
doc Loading commit data...
include Loading commit data...
lib Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.hgignore Loading commit data...
.hgtags Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README Loading commit data...
VERSION Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...