• Rick Hudson's avatar
    runtime: Speed up heapBitsForObject · 899a4ad4
    Rick Hudson authored
    Optimized heapBitsForObject by special casing
    objects whose size is a power of two. When a
    span holding such objects is initialized I
    added a mask that when &ed with an interior pointer
    results in the base of the pointer. For the garbage
    benchmark this resulted in CPU_CLK_UNHALTED in
    heapBitsForObject going from 7.7% down to 5.9%
    of the total, INST_RETIRED went from 12.2 -> 8.7.
    
    Here are the benchmarks that were at lease plus or minus 1%.
    
    benchmark                          old ns/op      new ns/op      delta
    BenchmarkFmtFprintfString          249            221            -11.24%
    BenchmarkFmtFprintfInt             247            223            -9.72%
    BenchmarkFmtFprintfEmpty           76.5           69.6           -9.02%
    BenchmarkBinaryTree17              4106631412     3744550160     -8.82%
    BenchmarkFmtFprintfFloat           424            399            -5.90%
    BenchmarkGoParse                   4484421        4242115        -5.40%
    BenchmarkGobEncode                 8803668        8449107        -4.03%
    BenchmarkFmtManyArgs               1494           1436           -3.88%
    BenchmarkGobDecode                 10431051       10032606       -3.82%
    BenchmarkFannkuch11                2591306713     2517400464     -2.85%
    BenchmarkTimeParse                 361            371            +2.77%
    BenchmarkJSONDecode                70620492       68830357       -2.53%
    BenchmarkRegexpMatchMedium_1K      54693          53343          -2.47%
    BenchmarkTemplate                  90008879       91929940       +2.13%
    BenchmarkTimeFormat                380            387            +1.84%
    BenchmarkRegexpMatchEasy1_32       111            113            +1.80%
    BenchmarkJSONEncode                21359159       21007583       -1.65%
    BenchmarkRegexpMatchEasy1_1K       603            613            +1.66%
    BenchmarkRegexpMatchEasy0_32       127            129            +1.57%
    BenchmarkFmtFprintfIntInt          399            393            -1.50%
    BenchmarkRegexpMatchEasy0_1K       373            378            +1.34%
    
    Change-Id: I78e297161026f8b5cc7507c965fd3e486f81ed29
    Reviewed-on: https://go-review.googlesource.com/8980Reviewed-by: 's avatarAustin Clements <austin@google.com>
    899a4ad4
Name
Last commit
Last update
..
archive Loading commit data...
bufio Loading commit data...
builtin Loading commit data...
bytes Loading commit data...
cmd Loading commit data...
compress Loading commit data...
container Loading commit data...
crypto Loading commit data...
database/sql Loading commit data...
debug Loading commit data...
encoding Loading commit data...
errors Loading commit data...
expvar Loading commit data...
flag Loading commit data...
fmt Loading commit data...
go Loading commit data...
hash Loading commit data...
html Loading commit data...
image Loading commit data...
index/suffixarray Loading commit data...
internal Loading commit data...
io Loading commit data...
log Loading commit data...
math Loading commit data...
mime Loading commit data...
net Loading commit data...
os Loading commit data...
path Loading commit data...
reflect Loading commit data...
regexp Loading commit data...
runtime Loading commit data...
sort Loading commit data...
strconv Loading commit data...
strings Loading commit data...
sync Loading commit data...
syscall Loading commit data...
testing Loading commit data...
text Loading commit data...
time Loading commit data...
unicode Loading commit data...
unsafe Loading commit data...
Make.dist Loading commit data...
all.bash Loading commit data...
all.bat Loading commit data...
all.rc Loading commit data...
androidtest.bash Loading commit data...
bootstrap.bash Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
iostest.bash Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
nacltest.bash Loading commit data...
race.bash Loading commit data...
race.bat Loading commit data...
run.bash Loading commit data...
run.bat Loading commit data...
run.rc Loading commit data...