Skip to content

Commit 8d4c6fb

Browse files
authored
adjust initial caps on middleware steps (#611)
1 parent 5cc76d9 commit 8d4c6fb

File tree

8 files changed

+30
-18
lines changed

8 files changed

+30
-18
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"id": "bf2d083e-b544-421e-9c05-42e73951e635",
3+
"type": "bugfix",
4+
"description": "Adjust the initial sizes of each middleware phase to avoid some unnecessary reallocation.",
5+
"modules": [
6+
"."
7+
]
8+
}

middleware/ordered_group.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,14 @@ type orderedIDs struct {
2323
items map[string]ider
2424
}
2525

26-
const baseOrderedItems = 5
26+
// selected based on the general upper bound of # of middlewares in each step
27+
// in the downstream aws-sdk-go-v2
28+
const baseOrderedItems = 8
2729

28-
func newOrderedIDs() *orderedIDs {
30+
func newOrderedIDs(cap int) *orderedIDs {
2931
return &orderedIDs{
30-
order: newRelativeOrder(),
31-
items: make(map[string]ider, baseOrderedItems),
32+
order: newRelativeOrder(cap),
33+
items: make(map[string]ider, cap),
3234
}
3335
}
3436

@@ -141,9 +143,9 @@ type relativeOrder struct {
141143
order []string
142144
}
143145

144-
func newRelativeOrder() *relativeOrder {
146+
func newRelativeOrder(cap int) *relativeOrder {
145147
return &relativeOrder{
146-
order: make([]string, 0, baseOrderedItems),
148+
order: make([]string, 0, cap),
147149
}
148150
}
149151

middleware/ordered_group_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
)
77

88
func TestOrderedIDsAdd(t *testing.T) {
9-
o := newOrderedIDs()
9+
o := newOrderedIDs(10)
1010

1111
noError(t, o.Add(&mockIder{"first"}, After))
1212
noError(t, o.Add(&mockIder{"second"}, After))
@@ -31,7 +31,7 @@ func TestOrderedIDsAdd(t *testing.T) {
3131
}
3232

3333
func TestOrderedIDsInsert(t *testing.T) {
34-
o := newOrderedIDs()
34+
o := newOrderedIDs(10)
3535

3636
noError(t, o.Add(&mockIder{"first"}, After))
3737
noError(t, o.Insert(&mockIder{"third"}, "first", After))
@@ -63,7 +63,7 @@ func TestOrderedIDsInsert(t *testing.T) {
6363
}
6464

6565
func TestOrderedIDsGet(t *testing.T) {
66-
o := newOrderedIDs()
66+
o := newOrderedIDs(10)
6767

6868
noError(t, o.Add(&mockIder{"first"}, After))
6969
noError(t, o.Add(&mockIder{"second"}, After))
@@ -83,7 +83,7 @@ func TestOrderedIDsGet(t *testing.T) {
8383
}
8484

8585
func TestOrderedIDsSwap(t *testing.T) {
86-
o := newOrderedIDs()
86+
o := newOrderedIDs(10)
8787

8888
noError(t, o.Add(&mockIder{"first"}, After))
8989
noError(t, o.Add(&mockIder{"second"}, After))
@@ -119,7 +119,7 @@ func TestOrderedIDsSwap(t *testing.T) {
119119
}
120120

121121
func TestOrderedIDsRemove(t *testing.T) {
122-
o := newOrderedIDs()
122+
o := newOrderedIDs(10)
123123
firstIder := &mockIder{"first"}
124124
noError(t, o.Add(firstIder, After))
125125
noError(t, o.Insert(&mockIder{"third"}, "first", After))
@@ -144,7 +144,7 @@ func TestOrderedIDsRemove(t *testing.T) {
144144
}
145145

146146
func TestOrderedIDsClear(t *testing.T) {
147-
o := newOrderedIDs()
147+
o := newOrderedIDs(10)
148148

149149
noError(t, o.Add(&mockIder{"first"}, After))
150150
noError(t, o.Add(&mockIder{"second"}, After))
@@ -161,7 +161,7 @@ func TestOrderedIDsClear(t *testing.T) {
161161
}
162162

163163
func TestOrderedIDsGetOrder(t *testing.T) {
164-
o := newOrderedIDs()
164+
o := newOrderedIDs(10)
165165

166166
noError(t, o.Add(&mockIder{"first"}, After))
167167
noError(t, o.Add(&mockIder{"second"}, After))

middleware/step_build.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ type BuildStep struct {
7979
// initialization added to it.
8080
func NewBuildStep() *BuildStep {
8181
return &BuildStep{
82-
ids: newOrderedIDs(),
82+
ids: newOrderedIDs(baseOrderedItems),
8383
}
8484
}
8585

middleware/step_deserialize.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ type DeserializeStep struct {
8585
// initialization added to it.
8686
func NewDeserializeStep() *DeserializeStep {
8787
return &DeserializeStep{
88-
ids: newOrderedIDs(),
88+
// downstream SDK typically has larger Deserialize step
89+
ids: newOrderedIDs(baseOrderedItems * 2),
8990
}
9091
}
9192

middleware/step_finalize.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ type FinalizeStep struct {
7979
// initialization added to it.
8080
func NewFinalizeStep() *FinalizeStep {
8181
return &FinalizeStep{
82-
ids: newOrderedIDs(),
82+
// downstream SDK typically has larger Finalize step
83+
ids: newOrderedIDs(baseOrderedItems * 2),
8384
}
8485
}
8586

middleware/step_initialize.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ type InitializeStep struct {
7979
// initialization added to it.
8080
func NewInitializeStep() *InitializeStep {
8181
return &InitializeStep{
82-
ids: newOrderedIDs(),
82+
ids: newOrderedIDs(baseOrderedItems),
8383
}
8484
}
8585

middleware/step_serialize.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ type SerializeStep struct {
8585
// serialize the input parameters into.
8686
func NewSerializeStep(newRequest func() interface{}) *SerializeStep {
8787
return &SerializeStep{
88-
ids: newOrderedIDs(),
88+
ids: newOrderedIDs(baseOrderedItems),
8989
newRequest: newRequest,
9090
}
9191
}

0 commit comments

Comments
 (0)