• Martin Möhrmann's avatar
    runtime: refactor insertion slot tracking for fast hashmap functions · 8585f9fd
    Martin Möhrmann authored
    * Avoid calculating insertk until needed.
    * Avoid a pointer into b.tophash and just track the insertion index.
      This avoids b.tophash being marked as escaping to heap.
    * Calculate val only once at the end of the mapassign functions.
    
    Function sizes decrease slightly, e.g. for mapassign_faststr:
    before "".mapassign_faststr STEXT size=1166 args=0x28 locals=0x78
    after  "".mapassign_faststr STEXT size=1080 args=0x28 locals=0x68
    
    name                     old time/op  new time/op  delta
    MapAssign/Int32/256-4    19.4ns ± 4%  19.5ns ±11%     ~     (p=0.973 n=20+20)
    MapAssign/Int32/65536-4  32.5ns ± 2%  32.4ns ± 3%     ~     (p=0.078 n=20+19)
    MapAssign/Int64/256-4    20.3ns ± 6%  17.6ns ± 5%  -13.01%  (p=0.000 n=20+20)
    MapAssign/Int64/65536-4  33.3ns ± 2%  33.3ns ± 1%     ~     (p=0.444 n=20+20)
    MapAssign/Str/256-4      22.3ns ± 3%  22.4ns ± 3%     ~     (p=0.343 n=20+20)
    MapAssign/Str/65536-4    44.9ns ± 1%  43.9ns ± 1%   -2.39%  (p=0.000 n=20+19)
    
    Change-Id: I2627bb8a961d366d9473b5922fa129176319eb22
    Reviewed-on: https://go-review.googlesource.com/74870
    Run-TryBot: Martin Möhrmann <moehrmann@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarKeith Randall <khr@golang.org>
    8585f9fd
Name
Last commit
Last update
.github Loading commit data...
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...