• Dmitriy Vyukov's avatar
    runtime: add memory prefetching to GC · f09e63a2
    Dmitriy Vyukov authored
    benchmark                              old ns/op    new ns/op    delta
    
    garbage.BenchmarkParser               4448988000   4370531000   -1.76%
    garbage.BenchmarkParser-2             4086045000   4023083000   -1.54%
    garbage.BenchmarkParser-4             3677365000   3667020000   -0.28%
    garbage.BenchmarkParser-8             3517253000   3543946000   +0.76%
    garbage.BenchmarkParser-16            3506562000   3512518000   +0.17%
    
    garbage.BenchmarkTree                  494435529    505784058   +2.30%
    garbage.BenchmarkTree-2                499652705    502774823   +0.62%
    garbage.BenchmarkTree-4                468482117    465713352   -0.59%
    garbage.BenchmarkTree-8                488533235    482287000   -1.28%
    garbage.BenchmarkTree-16               507835176    500654882   -1.41%
    
    garbage.BenchmarkTree2                  31453900     28804600   -8.42%
    garbage.BenchmarkTree2-2                21440600     19065800  -11.08%
    garbage.BenchmarkTree2-4                10982000     10009100   -8.86%
    garbage.BenchmarkTree2-8                 7544700      6479800  -14.11%
    garbage.BenchmarkTree2-16                7049500      6163200  -12.57%
    
    garbage.BenchmarkParserPause           135815000    125360666   -7.70%
    garbage.BenchmarkParserPause-2          92691523     84365476   -8.98%
    garbage.BenchmarkParserPause-4          53392190     46995809  -11.98%
    garbage.BenchmarkParserPause-8          36059523     30998900  -14.03%
    garbage.BenchmarkParserPause-16         30174300     27613350   -8.49%
    
    garbage.BenchmarkTreePause              20969784     22568102   +7.62%
    garbage.BenchmarkTreePause-2            20215875     20975130   +3.76%
    garbage.BenchmarkTreePause-4            17240709     17180666   -0.35%
    garbage.BenchmarkTreePause-8            18196386     18205870   +0.05%
    garbage.BenchmarkTreePause-16           20621158     20486867   -0.65%
    
    garbage.BenchmarkTree2Pause            173992142    159995285   -8.04%
    garbage.BenchmarkTree2Pause-2          131281904    118013714  -10.11%
    garbage.BenchmarkTree2Pause-4           93484952     85092666   -8.98%
    garbage.BenchmarkTree2Pause-8           88950523     77340809  -13.05%
    garbage.BenchmarkTree2Pause-16          86071238     76557952  -11.05%
    
    garbage.BenchmarkParserLastPause       327247000    288205000  -11.93%
    garbage.BenchmarkParserLastPause-2     217039000    187336000  -13.69%
    garbage.BenchmarkParserLastPause-4     119722000    105069000  -12.24%
    garbage.BenchmarkParserLastPause-8      70806000     64755000   -8.55%
    garbage.BenchmarkParserLastPause-16     62813000     53486000  -14.85%
    
    garbage.BenchmarkTreeLastPause          28420000     29735000   +4.63%
    garbage.BenchmarkTreeLastPause-2        23514000     25427000   +8.14%
    garbage.BenchmarkTreeLastPause-4        21773000     19548000  -10.22%
    garbage.BenchmarkTreeLastPause-8        24072000     24046000   -0.11%
    garbage.BenchmarkTreeLastPause-16       25149000     25291000   +0.56%
    
    garbage.BenchmarkTree2LastPause        314491000    287988000   -8.43%
    garbage.BenchmarkTree2LastPause-2      214363000    190616000  -11.08%
    garbage.BenchmarkTree2LastPause-4      109778000    100052000   -8.86%
    garbage.BenchmarkTree2LastPause-8       75390000     64753000  -14.11%
    garbage.BenchmarkTree2LastPause-16      70333000     61484000  -12.58%
    
    FTR, below are result with the empty prefetch function,
    that is, single RET but no real prefetching.
    It suggests that inlinable PREFETCH is worth pursuing.
    
    benchmark                              old ns/op    new ns/op    delta
    
    garbage.BenchmarkParser               4448988000   4560488000   +2.51%
    garbage.BenchmarkParser-2             4086045000   4129728000   +1.07%
    garbage.BenchmarkParser-4             3677365000   3728672000   +1.40%
    garbage.BenchmarkParser-8             3517253000   3583968000   +1.90%
    garbage.BenchmarkParser-16            3506562000   3591414000   +2.42%
    
    garbage.BenchmarkTree                  494435529    499580882   +1.04%
    garbage.BenchmarkTree-4                468482117    467387294   -0.23%
    garbage.BenchmarkTree-8                488533235    478311117   -2.09%
    garbage.BenchmarkTree-2                499652705    499324235   -0.07%
    garbage.BenchmarkTree-16               507835176    502005705   -1.15%
    
    garbage.BenchmarkTree2                  31453900     33296800   +5.86%
    garbage.BenchmarkTree2-2                21440600     22466400   +4.78%
    garbage.BenchmarkTree2-4                10982000     11402700   +3.83%
    garbage.BenchmarkTree2-8                 7544700      7476500   -0.90%
    garbage.BenchmarkTree2-16                7049500      7338200   +4.10%
    
    garbage.BenchmarkParserPause           135815000    139529142   +2.73%
    garbage.BenchmarkParserPause-2          92691523     95229190   +2.74%
    garbage.BenchmarkParserPause-4          53392190     53083476   -0.58%
    garbage.BenchmarkParserPause-8          36059523     34594800   -4.06%
    garbage.BenchmarkParserPause-16         30174300     30063300   -0.37%
    
    garbage.BenchmarkTreePause              20969784     21866920   +4.28%
    garbage.BenchmarkTreePause-2            20215875     20731125   +2.55%
    garbage.BenchmarkTreePause-4            17240709     17275837   +0.20%
    garbage.BenchmarkTreePause-8            18196386     17898777   -1.64%
    garbage.BenchmarkTreePause-16           20621158     20662772   +0.20%
    
    garbage.BenchmarkTree2Pause            173992142    184336857   +5.95%
    garbage.BenchmarkTree2Pause-2          131281904    138005714   +5.12%
    garbage.BenchmarkTree2Pause-4           93484952     98449238   +5.31%
    garbage.BenchmarkTree2Pause-8           88950523     89286095   +0.38%
    garbage.BenchmarkTree2Pause-16          86071238     89568666   +4.06%
    
    garbage.BenchmarkParserLastPause       327247000    342189000   +4.57%
    garbage.BenchmarkParserLastPause-2     217039000    217224000   +0.09%
    garbage.BenchmarkParserLastPause-4     119722000    121327000   +1.34%
    garbage.BenchmarkParserLastPause-8      70806000     71941000   +1.60%
    garbage.BenchmarkParserLastPause-16     62813000     60166000   -4.21%
    
    garbage.BenchmarkTreeLastPause          28420000     27840000   -2.04%
    garbage.BenchmarkTreeLastPause-2        23514000     27390000  +16.48%
    garbage.BenchmarkTreeLastPause-4        21773000     21414000   -1.65%
    garbage.BenchmarkTreeLastPause-8        24072000     21705000   -9.83%
    garbage.BenchmarkTreeLastPause-16       25149000     23932000   -4.84%
    
    garbage.BenchmarkTree2LastPause        314491000    332894000   +5.85%
    garbage.BenchmarkTree2LastPause-2      214363000    224611000   +4.78%
    garbage.BenchmarkTree2LastPause-4      109778000    113976000   +3.82%
    garbage.BenchmarkTree2LastPause-8       75390000     67223000  -10.83%
    garbage.BenchmarkTree2LastPause-16      70333000     73216000   +4.10%
    
    R=golang-dev, rsc
    CC=golang-dev
    https://golang.org/cl/5991057
    f09e63a2
mgc0.c 32.1 KB