• Dave Cheney's avatar
    net/textproto: more efficient header parsing · 2803744b
    Dave Cheney authored
    A co creation with bradfitz
    
    * add fast path for header lines which are not continuations
    * pass hint to better size initial mime header map
    
    lucky(~/go/src/pkg/net/http) % ~/go/misc/benchcmp {golden,new}.txt
    benchmark                          old ns/op    new ns/op    delta
    BenchmarkReadRequestChrome             10073         8348  -17.12%
    BenchmarkReadRequestCurl                4368         4350   -0.41%
    BenchmarkReadRequestApachebench         4412         4397   -0.34%
    BenchmarkReadRequestSiege               6431         5924   -7.88%
    BenchmarkReadRequestWrk                 2820         3146  +11.56%
    
    benchmark                           old MB/s     new MB/s  speedup
    BenchmarkReadRequestChrome             60.66        73.18    1.21x
    BenchmarkReadRequestCurl               17.85        17.93    1.00x
    BenchmarkReadRequestApachebench        18.58        18.65    1.00x
    BenchmarkReadRequestSiege              23.48        25.49    1.09x
    BenchmarkReadRequestWrk                14.18        12.71    0.90x
    
    benchmark                         old allocs   new allocs    delta
    BenchmarkReadRequestChrome                32           26  -18.75%
    BenchmarkReadRequestCurl                  15           15    0.00%
    BenchmarkReadRequestApachebench           16           15   -6.25%
    BenchmarkReadRequestSiege                 22           19  -13.64%
    BenchmarkReadRequestWrk                   11           11    0.00%
    
    benchmark                          old bytes    new bytes    delta
    BenchmarkReadRequestChrome              3148         2216  -29.61%
    BenchmarkReadRequestCurl                 905         1413   56.13%
    BenchmarkReadRequestApachebench          956         1413   47.80%
    BenchmarkReadRequestSiege               1397         1522    8.95%
    BenchmarkReadRequestWrk                  757         1369   80.85%
    
    R=bradfitz
    CC=golang-dev
    https://golang.org/cl/7300098
    2803744b
textproto.go 3.68 KB