• Dmitry Vyukov's avatar
    reflect: cache call frames · 67f8a813
    Dmitry Vyukov authored
    Call frame allocations can account for significant portion
    of all allocations in a program, if call is executed
    in an inner loop (e.g. to process every line in a log).
    On the other hand, the allocation is easy to remove
    using sync.Pool since the allocation is strictly scoped.
    
    benchmark           old ns/op     new ns/op     delta
    BenchmarkCall       634           338           -46.69%
    BenchmarkCall-4     496           167           -66.33%
    
    benchmark           old allocs     new allocs     delta
    BenchmarkCall       1              0              -100.00%
    BenchmarkCall-4     1              0              -100.00%
    
    Update #7818
    
    Change-Id: Icf60cce0a9be82e6171f0c0bd80dee2393db54a7
    Reviewed-on: https://go-review.googlesource.com/1954Reviewed-by: 's avatarKeith Randall <khr@golang.org>
    67f8a813
Name
Last commit
Last update
..
cgo Loading commit data...
debug Loading commit data...
pprof Loading commit data...
race Loading commit data...
Makefile Loading commit data...
alg.go Loading commit data...
append_test.go Loading commit data...
arch1_386.go Loading commit data...
arch1_amd64.go Loading commit data...
arch1_amd64p32.go Loading commit data...
arch1_arm.go Loading commit data...
arch1_ppc64.go Loading commit data...
arch1_ppc64le.go Loading commit data...
arch_386.go Loading commit data...
arch_amd64.go Loading commit data...
arch_amd64p32.go Loading commit data...
arch_arm.go Loading commit data...
arch_ppc64.go Loading commit data...
arch_ppc64le.go Loading commit data...
asm.s Loading commit data...
asm_386.s Loading commit data...
asm_amd64.s Loading commit data...
asm_amd64p32.s Loading commit data...
asm_arm.s Loading commit data...
asm_ppc64x.s Loading commit data...
atomic_386.go Loading commit data...
atomic_amd64x.go Loading commit data...
atomic_arm.go Loading commit data...
atomic_pointer.go Loading commit data...
atomic_ppc64x.go Loading commit data...
atomic_ppc64x.s Loading commit data...
cgo.go Loading commit data...
cgocall.go Loading commit data...
cgocall.h Loading commit data...
cgocallback.go Loading commit data...
chan.go Loading commit data...
chan1.go Loading commit data...
chan_test.go Loading commit data...
closure_test.go Loading commit data...
compiler.go Loading commit data...
complex.go Loading commit data...
complex_test.go Loading commit data...
cpuprof.go Loading commit data...
cputicks.go Loading commit data...
crash_cgo_test.go Loading commit data...
crash_test.go Loading commit data...
debug.go Loading commit data...
defs1_linux.go Loading commit data...
defs1_netbsd_386.go Loading commit data...
defs1_netbsd_amd64.go Loading commit data...
defs1_netbsd_arm.go Loading commit data...
defs1_solaris_amd64.go Loading commit data...
defs2_linux.go Loading commit data...
defs3_linux.go Loading commit data...
defs_arm_linux.go Loading commit data...
defs_darwin.go Loading commit data...
defs_darwin_386.go Loading commit data...
defs_darwin_amd64.go Loading commit data...
defs_dragonfly.go Loading commit data...
defs_dragonfly_386.go Loading commit data...
defs_dragonfly_amd64.go Loading commit data...
defs_freebsd.go Loading commit data...
defs_freebsd_386.go Loading commit data...
defs_freebsd_amd64.go Loading commit data...
defs_freebsd_arm.go Loading commit data...
defs_linux.go Loading commit data...
defs_linux_386.go Loading commit data...
defs_linux_amd64.go Loading commit data...
defs_linux_arm.go Loading commit data...
defs_linux_ppc64.go Loading commit data...
defs_linux_ppc64le.go Loading commit data...
defs_nacl_386.go Loading commit data...
defs_nacl_amd64p32.go Loading commit data...
defs_nacl_arm.go Loading commit data...
defs_netbsd.go Loading commit data...
defs_netbsd_386.go Loading commit data...
defs_netbsd_amd64.go Loading commit data...
defs_netbsd_arm.go Loading commit data...
defs_openbsd.go Loading commit data...
defs_openbsd_386.go Loading commit data...
defs_openbsd_amd64.go Loading commit data...
defs_plan9_386.go Loading commit data...
defs_plan9_amd64.go Loading commit data...
defs_solaris.go Loading commit data...
defs_solaris_amd64.go Loading commit data...
defs_windows.go Loading commit data...
defs_windows_386.go Loading commit data...
defs_windows_amd64.go Loading commit data...
env_plan9.go Loading commit data...
env_posix.go Loading commit data...
error.go Loading commit data...
export_futex_test.go Loading commit data...
export_test.go Loading commit data...
export_windows_test.go Loading commit data...
extern.go Loading commit data...
funcdata.h Loading commit data...
futex_test.go Loading commit data...
gc_test.go Loading commit data...
gcinfo_test.go Loading commit data...
gengoos.go Loading commit data...
go_tls.h Loading commit data...
hash32.go Loading commit data...
hash64.go Loading commit data...
hash_test.go Loading commit data...
hashmap.go Loading commit data...
hashmap_fast.go Loading commit data...
heapdump.go Loading commit data...
iface.go Loading commit data...
iface_test.go Loading commit data...
lfstack.go Loading commit data...
lfstack_32bit.go Loading commit data...
lfstack_amd64.go Loading commit data...
lfstack_linux_ppc64x.go Loading commit data...
lfstack_test.go Loading commit data...
lock_futex.go Loading commit data...
lock_sema.go Loading commit data...
malloc.go Loading commit data...
malloc1.go Loading commit data...
malloc2.go Loading commit data...
malloc_test.go Loading commit data...
map_test.go Loading commit data...
mapspeed_test.go Loading commit data...
mbarrier.go Loading commit data...
mbitmap.go Loading commit data...
mcache.go Loading commit data...
mcentral.go Loading commit data...
mem.go Loading commit data...
mem_bsd.go Loading commit data...
mem_darwin.go Loading commit data...
mem_linux.go Loading commit data...
mem_plan9.go Loading commit data...
mem_windows.go Loading commit data...
memclr_386.s Loading commit data...
memclr_amd64.s Loading commit data...
memclr_arm.s Loading commit data...
memclr_plan9_386.s Loading commit data...
memclr_plan9_amd64.s Loading commit data...
memclr_ppc64x.s Loading commit data...
memmove_386.s Loading commit data...
memmove_amd64.s Loading commit data...
memmove_arm.s Loading commit data...
memmove_linux_amd64_test.go Loading commit data...
memmove_nacl_amd64p32.s Loading commit data...
memmove_plan9_386.s Loading commit data...
memmove_plan9_amd64.s Loading commit data...
memmove_ppc64x.s Loading commit data...
memmove_test.go Loading commit data...
mfinal.go Loading commit data...
mfinal_test.go Loading commit data...
mfixalloc.go Loading commit data...
mgc.go Loading commit data...
mgc0.go Loading commit data...
mgc0.h Loading commit data...
mheap.go Loading commit data...
mknacl.sh Loading commit data...
mprof.go Loading commit data...
msize.go Loading commit data...
netpoll.go Loading commit data...
netpoll_epoll.go Loading commit data...
netpoll_kqueue.go Loading commit data...
netpoll_nacl.go Loading commit data...
netpoll_solaris.go Loading commit data...
netpoll_stub.go Loading commit data...
netpoll_windows.go Loading commit data...
noasm.go Loading commit data...
norace_test.go Loading commit data...
os1_darwin.go Loading commit data...
os1_dragonfly.go Loading commit data...
os1_freebsd.go Loading commit data...
os1_linux.go Loading commit data...
os1_nacl.go Loading commit data...
os1_netbsd.go Loading commit data...
os1_netbsd_386.go Loading commit data...
os1_netbsd_amd64.go Loading commit data...
os1_openbsd.go Loading commit data...
os1_plan9.go Loading commit data...
os1_windows.go Loading commit data...
os1_windows_386.go Loading commit data...
os1_windows_amd64.go Loading commit data...
os2_darwin.go Loading commit data...
os2_dragonfly.go Loading commit data...
os2_freebsd.go Loading commit data...
os2_linux.go Loading commit data...
os2_nacl.go Loading commit data...
os2_netbsd.go Loading commit data...
os2_openbsd.go Loading commit data...
os2_plan9.go Loading commit data...
os2_solaris.go Loading commit data...
os2_windows.go Loading commit data...
os3_plan9.go Loading commit data...
os3_solaris.go Loading commit data...
os_android_arm.go Loading commit data...
os_darwin.go Loading commit data...
os_dragonfly.go Loading commit data...
os_freebsd.go Loading commit data...
os_freebsd_arm.go Loading commit data...
os_linux.go Loading commit data...
os_linux_386.go Loading commit data...
os_linux_arm.go Loading commit data...
os_nacl.go Loading commit data...
os_nacl_arm.go Loading commit data...
os_netbsd.go Loading commit data...
os_netbsd_arm.go Loading commit data...
os_openbsd.go Loading commit data...
os_plan9.go Loading commit data...
os_solaris.go Loading commit data...
os_windows.go Loading commit data...
os_windows_386.go Loading commit data...
os_windows_amd64.go Loading commit data...
panic.go Loading commit data...
panic1.go Loading commit data...
parfor.go Loading commit data...
parfor_test.go Loading commit data...
print1.go Loading commit data...
print1_write.go Loading commit data...
print1_write_android.go Loading commit data...
proc.go Loading commit data...
proc1.go Loading commit data...
proc_test.go Loading commit data...
race.go Loading commit data...
race0.go Loading commit data...
race1.go Loading commit data...
race_amd64.s Loading commit data...
rdebug.go Loading commit data...
rt0_android_arm.s Loading commit data...
rt0_darwin_386.s Loading commit data...
rt0_darwin_amd64.s Loading commit data...
rt0_dragonfly_386.s Loading commit data...
rt0_dragonfly_amd64.s Loading commit data...
rt0_freebsd_386.s Loading commit data...
rt0_freebsd_amd64.s Loading commit data...
rt0_freebsd_arm.s Loading commit data...
rt0_linux_386.s Loading commit data...
rt0_linux_amd64.s Loading commit data...
rt0_linux_arm.s Loading commit data...
rt0_linux_ppc64.s Loading commit data...
rt0_linux_ppc64le.s Loading commit data...
rt0_nacl_386.s Loading commit data...
rt0_nacl_amd64p32.s Loading commit data...
rt0_nacl_arm.s Loading commit data...
rt0_netbsd_386.s Loading commit data...
rt0_netbsd_amd64.s Loading commit data...
rt0_netbsd_arm.s Loading commit data...
rt0_openbsd_386.s Loading commit data...
rt0_openbsd_amd64.s Loading commit data...
rt0_plan9_386.s Loading commit data...
rt0_plan9_amd64.s Loading commit data...
rt0_solaris_amd64.s Loading commit data...
rt0_windows_386.s Loading commit data...
rt0_windows_amd64.s Loading commit data...
rune.go Loading commit data...
runtime-gdb.py Loading commit data...
runtime-gdb_test.go Loading commit data...
runtime.go Loading commit data...
runtime1.go Loading commit data...
runtime2.go Loading commit data...
runtime_linux_test.go Loading commit data...
runtime_test.go Loading commit data...
runtime_unix_test.go Loading commit data...
select.go Loading commit data...
sema.go Loading commit data...
signal1_unix.go Loading commit data...
signal_386.go Loading commit data...
signal_amd64x.go Loading commit data...
signal_arm.go Loading commit data...
signal_darwin.go Loading commit data...
signal_darwin_386.go Loading commit data...
signal_darwin_amd64.go Loading commit data...
signal_dragonfly.go Loading commit data...
signal_dragonfly_386.go Loading commit data...
signal_dragonfly_amd64.go Loading commit data...
signal_freebsd.go Loading commit data...
signal_freebsd_386.go Loading commit data...
signal_freebsd_amd64.go Loading commit data...
signal_freebsd_arm.go Loading commit data...
signal_linux.go Loading commit data...
signal_linux_386.go Loading commit data...
signal_linux_amd64.go Loading commit data...
signal_linux_arm.go Loading commit data...
signal_linux_ppc64x.go Loading commit data...
signal_nacl.go Loading commit data...
signal_nacl_386.go Loading commit data...
signal_nacl_amd64p32.go Loading commit data...
signal_nacl_arm.go Loading commit data...
signal_netbsd.go Loading commit data...
signal_netbsd_386.go Loading commit data...
signal_netbsd_amd64.go Loading commit data...
signal_netbsd_arm.go Loading commit data...
signal_openbsd.go Loading commit data...
signal_openbsd_386.go Loading commit data...
signal_openbsd_amd64.go Loading commit data...
signal_plan9.go Loading commit data...
signal_ppc64x.go Loading commit data...
signal_solaris.go Loading commit data...
signal_solaris_amd64.go Loading commit data...
signal_unix.go Loading commit data...
signal_unix.h Loading commit data...
signals_windows.h Loading commit data...
sigpanic_unix.go Loading commit data...
sigqueue.go Loading commit data...
slice.go Loading commit data...
softfloat64.go Loading commit data...
softfloat64_test.go Loading commit data...
softfloat_arm.go Loading commit data...
sqrt.go Loading commit data...
stack.h Loading commit data...
stack1.go Loading commit data...
stack2.go Loading commit data...
stack_test.go Loading commit data...
string.go Loading commit data...
string1.go Loading commit data...
string_test.go Loading commit data...
stubs.go Loading commit data...
stubs2.go Loading commit data...
stubs3.go Loading commit data...
symtab.go Loading commit data...
symtab_test.go Loading commit data...
sys_arm.go Loading commit data...
sys_darwin_386.s Loading commit data...
sys_darwin_amd64.s Loading commit data...
sys_dragonfly_386.s Loading commit data...
sys_dragonfly_amd64.s Loading commit data...
sys_freebsd_386.s Loading commit data...
sys_freebsd_amd64.s Loading commit data...
sys_freebsd_arm.s Loading commit data...
sys_linux_386.s Loading commit data...
sys_linux_amd64.s Loading commit data...
sys_linux_arm.s Loading commit data...
sys_linux_ppc64x.s Loading commit data...
sys_nacl_386.s Loading commit data...
sys_nacl_amd64p32.s Loading commit data...
sys_nacl_arm.s Loading commit data...
sys_netbsd_386.s Loading commit data...
sys_netbsd_amd64.s Loading commit data...
sys_netbsd_arm.s Loading commit data...
sys_openbsd_386.s Loading commit data...
sys_openbsd_amd64.s Loading commit data...
sys_plan9_386.s Loading commit data...
sys_plan9_amd64.s Loading commit data...
sys_ppc64x.go Loading commit data...
sys_solaris_amd64.s Loading commit data...
sys_windows_386.s Loading commit data...
sys_windows_amd64.s Loading commit data...
sys_x86.go Loading commit data...
syscall2_solaris.go Loading commit data...
syscall_nacl.h Loading commit data...
syscall_solaris.go Loading commit data...
syscall_windows.go Loading commit data...
syscall_windows_test.go Loading commit data...
time.go Loading commit data...
tls_arm.s Loading commit data...
tls_ppc64x.s Loading commit data...
traceback.go Loading commit data...
type.go Loading commit data...
typekind.go Loading commit data...
typekind.h Loading commit data...
typekind1.go Loading commit data...
unaligned1.go Loading commit data...
unaligned2.go Loading commit data...
vdso_linux_amd64.go Loading commit data...
vdso_none.go Loading commit data...
vlop_386.s Loading commit data...
vlop_arm.s Loading commit data...
vlop_arm_test.go Loading commit data...
vlrt.go Loading commit data...
wbfat.go Loading commit data...
wbfat_gen.go Loading commit data...
wincallback.go Loading commit data...
zcallback_windows.go Loading commit data...
zcallback_windows.s Loading commit data...
zgoarch_386.go Loading commit data...
zgoarch_amd64.go Loading commit data...
zgoarch_amd64p32.go Loading commit data...
zgoarch_arm.go Loading commit data...
zgoarch_ppc64.go Loading commit data...
zgoarch_ppc64le.go Loading commit data...
zgoos_android.go Loading commit data...
zgoos_darwin.go Loading commit data...
zgoos_dragonfly.go Loading commit data...
zgoos_freebsd.go Loading commit data...
zgoos_linux.go Loading commit data...
zgoos_nacl.go Loading commit data...
zgoos_netbsd.go Loading commit data...
zgoos_openbsd.go Loading commit data...
zgoos_plan9.go Loading commit data...
zgoos_solaris.go Loading commit data...
zgoos_windows.go Loading commit data...