• 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
Name
Last commit
Last update
..
http Loading commit data...
mail Loading commit data...
rpc Loading commit data...
smtp Loading commit data...
testdata Loading commit data...
textproto Loading commit data...
url Loading commit data...
cgo_bsd.go Loading commit data...
cgo_linux.go Loading commit data...
cgo_netbsd.go Loading commit data...
cgo_openbsd.go Loading commit data...
cgo_stub.go Loading commit data...
cgo_unix.go Loading commit data...
conn_test.go Loading commit data...
dial.go Loading commit data...
dial_test.go Loading commit data...
dial_windows_test.go Loading commit data...
dialgoogle_test.go Loading commit data...
dnsclient.go Loading commit data...
dnsclient_unix.go Loading commit data...
dnsconfig_unix.go Loading commit data...
dnsmsg.go Loading commit data...
dnsmsg_test.go Loading commit data...
dnsname_test.go Loading commit data...
example_test.go Loading commit data...
fd_bsd.go Loading commit data...
fd_darwin.go Loading commit data...
fd_linux.go Loading commit data...
fd_plan9.go Loading commit data...
fd_posix_test.go Loading commit data...
fd_unix.go Loading commit data...
fd_unix_test.go Loading commit data...
fd_windows.go Loading commit data...
file_plan9.go Loading commit data...
file_test.go Loading commit data...
file_unix.go Loading commit data...
file_windows.go Loading commit data...
hosts.go Loading commit data...
hosts_test.go Loading commit data...
interface.go Loading commit data...
interface_bsd.go Loading commit data...
interface_darwin.go Loading commit data...
interface_freebsd.go Loading commit data...
interface_linux.go Loading commit data...
interface_linux_test.go Loading commit data...
interface_netbsd.go Loading commit data...
interface_openbsd.go Loading commit data...
interface_stub.go Loading commit data...
interface_test.go Loading commit data...
interface_windows.go Loading commit data...
ip.go Loading commit data...
ip_test.go Loading commit data...
ipraw_test.go Loading commit data...
iprawsock.go Loading commit data...
iprawsock_plan9.go Loading commit data...
iprawsock_posix.go Loading commit data...
ipsock.go Loading commit data...
ipsock_plan9.go Loading commit data...
ipsock_posix.go Loading commit data...
lookup.go Loading commit data...
lookup_plan9.go Loading commit data...
lookup_test.go Loading commit data...
lookup_unix.go Loading commit data...
lookup_windows.go Loading commit data...
mac.go Loading commit data...
mac_test.go Loading commit data...
multicast_posix_test.go Loading commit data...
net.go Loading commit data...
net_test.go Loading commit data...
newpollserver_unix.go Loading commit data...
packetconn_test.go Loading commit data...
parse.go Loading commit data...
parse_test.go Loading commit data...
pipe.go Loading commit data...
pipe_test.go Loading commit data...
port.go Loading commit data...
port_test.go Loading commit data...
port_unix.go Loading commit data...
protoconn_test.go Loading commit data...
sendfile_freebsd.go Loading commit data...
sendfile_linux.go Loading commit data...
sendfile_stub.go Loading commit data...
sendfile_windows.go Loading commit data...
server_test.go Loading commit data...
sock_bsd.go Loading commit data...
sock_cloexec.go Loading commit data...
sock_linux.go Loading commit data...
sock_posix.go Loading commit data...
sock_unix.go Loading commit data...
sock_windows.go Loading commit data...
sockopt_bsd.go Loading commit data...
sockopt_linux.go Loading commit data...
sockopt_posix.go Loading commit data...
sockopt_windows.go Loading commit data...
sockoptip_bsd.go Loading commit data...
sockoptip_linux.go Loading commit data...
sockoptip_posix.go Loading commit data...
sockoptip_windows.go Loading commit data...
sys_cloexec.go Loading commit data...
tcp_test.go Loading commit data...
tcpsock.go Loading commit data...
tcpsock_plan9.go Loading commit data...
tcpsock_posix.go Loading commit data...
timeout_test.go Loading commit data...
udp_test.go Loading commit data...
udpsock.go Loading commit data...
udpsock_plan9.go Loading commit data...
udpsock_posix.go Loading commit data...
unicast_posix_test.go Loading commit data...
unix_test.go Loading commit data...
unixsock.go Loading commit data...
unixsock_plan9.go Loading commit data...
unixsock_posix.go Loading commit data...