Skip to content

Commit 18d2e7b

Browse files
committed
Use SetIterKey/SetIterValue
Compared to previous commit: ``` │ stash.bench │ fix-setiterval.bench │ │ sec/op │ sec/op vs base │ Map-10 3.159µ ± 1% 2.609µ ± 1% -17.44% (p=0.002 n=6) │ stash.bench │ fix-setiterval.bench │ │ B/op │ B/op vs base │ Map-10 1360.0 ± 0% 752.0 ± 0% -44.71% (p=0.002 n=6) │ stash.bench │ fix-setiterval.bench │ │ allocs/op │ allocs/op vs base │ Map-10 128.00 ± 0% 90.00 ± 0% -29.69% (p=0.002 n=6) ``` Compared to 1dee3c3: ``` │ 1dee3c3.bench │ fix-setiterval.bench │ │ sec/op │ sec/op vs base │ Map-10 3.608µ ± 1% 2.537µ ± 1% -29.68% (p=0.002 n=6) │ 1dee3c3.bench │ fix-setiterval.bench │ │ B/op │ B/op vs base │ Map-10 1888.0 ± 0% 752.0 ± 0% -60.17% (p=0.002 n=6) │ 1dee3c3.bench │ fix-setiterval.bench │ │ allocs/op │ allocs/op vs base │ Map-10 130.00 ± 0% 90.00 ± 0% -30.77% (p=0.002 n=6) ````
1 parent 669eafd commit 18d2e7b

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

hashstructure.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -220,12 +220,16 @@ func (w *walker) visit(v reflect.Value, opts *visitOpts) (uint64, error) {
220220
// and value hashes. This makes it deterministic despite ordering.
221221
var h uint64
222222

223+
k := reflect.New(v.Type().Key()).Elem()
224+
vv := reflect.New(v.Type().Elem()).Elem()
225+
223226
iter := v.MapRange()
227+
224228
for iter.Next() {
225-
k := iter.Key()
226-
v := iter.Value()
229+
k.SetIterKey(iter)
230+
vv.SetIterValue(iter)
227231
if includeMap != nil {
228-
incl, err := includeMap.HashIncludeMap(field, k.Interface(), v.Interface())
232+
incl, err := includeMap.HashIncludeMap(field, k.Interface(), vv.Interface())
229233
if err != nil {
230234
return 0, err
231235
}
@@ -238,7 +242,7 @@ func (w *walker) visit(v reflect.Value, opts *visitOpts) (uint64, error) {
238242
if err != nil {
239243
return 0, err
240244
}
241-
vh, err := w.visit(v, nil)
245+
vh, err := w.visit(vv, nil)
242246
if err != nil {
243247
return 0, err
244248
}

0 commit comments

Comments
 (0)