diff options
| author | Martin Möhrmann <moehrmann@google.com> | 2017-09-07 05:57:44 +0200 |
|---|---|---|
| committer | Martin Möhrmann <moehrmann@google.com> | 2017-11-02 18:00:36 +0000 |
| commit | 8585f9fdb176893992bc8096ff595148b14b1795 (patch) | |
| tree | a0653ca7130991c645ae61fbabda654225ce04c5 /src/unicode | |
| parent | 2f1f607b21af8c30e80fb4fc062a8f447cffd48b (diff) | |
| download | go-8585f9fdb176893992bc8096ff595148b14b1795.tar.xz | |
runtime: refactor insertion slot tracking for fast hashmap functions
* 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: Keith Randall <khr@golang.org>
Diffstat (limited to 'src/unicode')
0 files changed, 0 insertions, 0 deletions
