• Taru Karttunen's avatar
    os: reduce allocations in Readdir on unix · f5f480e1
    Taru Karttunen authored
    Include syscall.Stat_t on unix to the
    unexported fileStat structure rather than
    accessing it though an interface.
    
    Additionally add a benchmark for Readdir
    (and Readdirnames).
    
    Tested on linux, freebsd, netbsd, openbsd
    darwin, solaris, does not touch windows
    stuff. Does not change the API, as
    discussed on golang-dev.
    
    E.g. on linux/amd64 with a directory of 65 files:
    
    benchmark              old ns/op     new ns/op     delta
    BenchmarkReaddir-4     67774         66225         -2.29%
    
    benchmark              old allocs     new allocs     delta
    BenchmarkReaddir-4     334            269            -19.46%
    
    benchmark              old bytes     new bytes     delta
    BenchmarkReaddir-4     25208         24168         -4.13%
    
    Change-Id: I44ef72a04ad7055523a980f29aa11122040ae8fe
    Reviewed-on: https://go-review.googlesource.com/16423Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    f5f480e1
Name
Last commit
Last update
..
exec Loading commit data...
signal Loading commit data...
user Loading commit data...
dir_plan9.go Loading commit data...
dir_unix.go Loading commit data...
dir_windows.go Loading commit data...
doc.go Loading commit data...
env.go Loading commit data...
env_test.go Loading commit data...
env_unix_test.go Loading commit data...
error.go Loading commit data...
error_plan9.go Loading commit data...
error_test.go Loading commit data...
error_unix.go Loading commit data...
error_windows.go Loading commit data...
exec.go Loading commit data...
exec_plan9.go Loading commit data...
exec_posix.go Loading commit data...
exec_unix.go Loading commit data...
exec_windows.go Loading commit data...
export_test.go Loading commit data...
file.go Loading commit data...
file_plan9.go Loading commit data...
file_posix.go Loading commit data...
file_unix.go Loading commit data...
file_windows.go Loading commit data...
getwd.go Loading commit data...
getwd_darwin.go Loading commit data...
os_test.go Loading commit data...
os_unix_test.go Loading commit data...
os_windows_test.go Loading commit data...
path.go Loading commit data...
path_plan9.go Loading commit data...
path_test.go Loading commit data...
path_unix.go Loading commit data...
path_windows.go Loading commit data...
pipe_bsd.go Loading commit data...
pipe_linux.go Loading commit data...
proc.go Loading commit data...
stat_darwin.go Loading commit data...
stat_dragonfly.go Loading commit data...
stat_freebsd.go Loading commit data...
stat_linux.go Loading commit data...
stat_nacl.go Loading commit data...
stat_netbsd.go Loading commit data...
stat_openbsd.go Loading commit data...
stat_plan9.go Loading commit data...
stat_solaris.go Loading commit data...
stat_windows.go Loading commit data...
sticky_bsd.go Loading commit data...
sticky_notbsd.go Loading commit data...
str.go Loading commit data...
sys_bsd.go Loading commit data...
sys_darwin.go Loading commit data...
sys_freebsd.go Loading commit data...
sys_linux.go Loading commit data...
sys_nacl.go Loading commit data...
sys_plan9.go Loading commit data...
sys_solaris.go Loading commit data...
sys_unix.go Loading commit data...
sys_windows.go Loading commit data...
types.go Loading commit data...
types_plan9.go Loading commit data...
types_unix.go Loading commit data...
types_windows.go Loading commit data...