[#357] netmap: Provide slice to append to in flattenNodes()
``` goos: linux goarch: amd64 pkg: git.frostfs.info/TrueCloudLab/frostfs-sdk-go/netmap cpu: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz │ old │ new │ │ sec/op │ sec/op vs base │ Netmap_ContainerNodes/REP_2-8 5.867µ ± 1% 5.821µ ± 0% -0.79% (p=0.000 n=10) Netmap_ContainerNodes/REP_2_IN_X_CBF_2_SELECT_2_FROM_*_AS_X-8 5.786µ ± 2% 5.810µ ± 1% ~ (p=1.000 n=10) geomean 5.826µ 5.815µ -0.19% │ old │ new │ │ B/op │ B/op vs base │ Netmap_ContainerNodes/REP_2-8 7.609Ki ± 0% 7.328Ki ± 0% -3.70% (p=0.000 n=10) Netmap_ContainerNodes/REP_2_IN_X_CBF_2_SELECT_2_FROM_*_AS_X-8 7.031Ki ± 0% 6.859Ki ± 0% -2.44% (p=0.000 n=10) geomean 7.315Ki 7.090Ki -3.07% │ old │ new │ │ allocs/op │ allocs/op vs base │ Netmap_ContainerNodes/REP_2-8 77.00 ± 0% 77.00 ± 0% ~ (p=1.000 n=10) ¹ Netmap_ContainerNodes/REP_2_IN_X_CBF_2_SELECT_2_FROM_*_AS_X-8 77.00 ± 0% 77.00 ± 0% ~ (p=1.000 n=10) ¹ geomean 77.00 77.00 +0.00% ¹ all samples are equal ``` Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
parent
6458c11e83
commit
fb999fecac
2 changed files with 8 additions and 16 deletions
|
@ -139,20 +139,12 @@ func (n nodes) appendWeightsTo(wf weightFunc, w []float64) []float64 {
|
|||
return w
|
||||
}
|
||||
|
||||
func flattenNodes(ns []nodes) nodes {
|
||||
var sz, i int
|
||||
|
||||
for i = range ns {
|
||||
sz += len(ns[i])
|
||||
}
|
||||
|
||||
result := make(nodes, 0, sz)
|
||||
|
||||
// flattenNodes flattens ns nested list and appends the result to the target slice.
|
||||
func flattenNodes(target nodes, ns []nodes) nodes {
|
||||
for i := range ns {
|
||||
result = append(result, ns[i]...)
|
||||
target = append(target, ns[i]...)
|
||||
}
|
||||
|
||||
return result
|
||||
return target
|
||||
}
|
||||
|
||||
// PlacementVectors sorts container nodes returned by ContainerNodes method
|
||||
|
@ -287,7 +279,7 @@ func (m NetMap) ContainerNodes(p PlacementPolicy, pivot []byte) ([][]NodeInfo, e
|
|||
return nil, err
|
||||
}
|
||||
|
||||
result[i] = append(result[i], flattenNodes(nodes)...)
|
||||
result[i] = flattenNodes(result[i], nodes)
|
||||
|
||||
if unique {
|
||||
c.addUsedNodes(result[i]...)
|
||||
|
@ -304,14 +296,14 @@ func (m NetMap) ContainerNodes(p PlacementPolicy, pivot []byte) ([][]NodeInfo, e
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result[i] = append(result[i], flattenNodes(nodes)...)
|
||||
result[i] = flattenNodes(result[i], nodes)
|
||||
c.addUsedNodes(result[i]...)
|
||||
} else {
|
||||
nodes, ok := c.selections[sName]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("selector not found: REPLICA '%s'", sName)
|
||||
}
|
||||
result[i] = append(result[i], flattenNodes(nodes)...)
|
||||
result[i] = flattenNodes(result[i], nodes)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -191,7 +191,7 @@ func TestPlacementPolicy_DeterministicOrder(t *testing.T) {
|
|||
nss[i] = v[i]
|
||||
}
|
||||
|
||||
ns := flattenNodes(nss)
|
||||
ns := flattenNodes(nil, nss)
|
||||
require.Equal(t, 2, len(ns))
|
||||
return ns[0].Hash(), ns[1].Hash()
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue