• 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
api Loading commit data...
doc Loading commit data...
lib/time Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README.md Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...