Skip to content
Snippets Groups Projects
  • Rick Hudson's avatar
    99482f2f
    runtime: Add prefetch to allocation code · 99482f2f
    Rick Hudson authored
    The routine mallocgc retrieves objects from freelists. Prefetch
    the object that will be returned in the next call to mallocgc.
    Experiments indicate that this produces a 1% improvement when using
    prefetchnta and less when using prefetcht0, prefetcht1, or prefetcht2.
    
    Benchmark numbers indicate a 1% improvement over no
    prefetch, much less over prefetcht0, prefetcht1, and prefetcht2.
    These numbers were for the garbage benchmark with MAXPROCS=4
    no prefetch                          >> 5.96 / 5.77 / 5.89
    prefetcht0(uintptr(v.ptr().next))    >> 5.88 / 6.17 / 5.84
    prefetcht1(uintptr(v.ptr().next))    >> 5.88 / 5.89 / 5.91
    prefetcht2(uintptr(v.ptr().next))    >> 5.87 / 6.47 / 5.92
    prefetchnta(uintptr(v.ptr().next))   >> 5.72 / 5.84 / 5.85
    
    Change-Id: I54e07172081cccb097d5b5ce8789d74daa055ed9
    Reviewed-on: https://go-review.googlesource.com/5350
    
    
    Reviewed-by: default avatarDmitry Vyukov <dvyukov@google.com>
    Reviewed-by: default avatarAustin Clements <austin@google.com>
    99482f2f
    History
    runtime: Add prefetch to allocation code
    Rick Hudson authored
    The routine mallocgc retrieves objects from freelists. Prefetch
    the object that will be returned in the next call to mallocgc.
    Experiments indicate that this produces a 1% improvement when using
    prefetchnta and less when using prefetcht0, prefetcht1, or prefetcht2.
    
    Benchmark numbers indicate a 1% improvement over no
    prefetch, much less over prefetcht0, prefetcht1, and prefetcht2.
    These numbers were for the garbage benchmark with MAXPROCS=4
    no prefetch                          >> 5.96 / 5.77 / 5.89
    prefetcht0(uintptr(v.ptr().next))    >> 5.88 / 6.17 / 5.84
    prefetcht1(uintptr(v.ptr().next))    >> 5.88 / 5.89 / 5.91
    prefetcht2(uintptr(v.ptr().next))    >> 5.87 / 6.47 / 5.92
    prefetchnta(uintptr(v.ptr().next))   >> 5.72 / 5.84 / 5.85
    
    Change-Id: I54e07172081cccb097d5b5ce8789d74daa055ed9
    Reviewed-on: https://go-review.googlesource.com/5350
    
    
    Reviewed-by: default avatarDmitry Vyukov <dvyukov@google.com>
    Reviewed-by: default avatarAustin Clements <austin@google.com>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.