Skip to content

Commit e089bca

Browse files
committed
fix: use struct directly instead of referenes to reduce gc preassure
Signed-off-by: Lukas Wöhrl <[email protected]>
1 parent 6401f0f commit e089bca

File tree

10 files changed

+31
-31
lines changed

10 files changed

+31
-31
lines changed

pkg/clients/cloudwatch/client.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,23 +56,23 @@ type ConcurrencyLimiter interface {
5656

5757
type MetricDataResult struct {
5858
ID string
59-
Datapoints []*DatapointWithTimestamp
59+
Datapoints []DatapointWithTimestamp
6060
}
6161

6262
type DatapointWithTimestamp struct {
6363
Datapoint *float64
6464
Timestamp time.Time
6565
}
6666

67-
func NewDataPoint(datapoint *float64, timestamp time.Time) *DatapointWithTimestamp {
68-
return &DatapointWithTimestamp{
67+
func NewDataPoint(datapoint *float64, timestamp time.Time) DatapointWithTimestamp {
68+
return DatapointWithTimestamp{
6969
Timestamp: timestamp,
7070
Datapoint: datapoint,
7171
}
7272
}
7373

74-
func SingleDataPoint(datapoint *float64, timestamp time.Time) []*DatapointWithTimestamp {
75-
return []*DatapointWithTimestamp{NewDataPoint(datapoint, timestamp)}
74+
func SingleDataPoint(datapoint *float64, timestamp time.Time) []DatapointWithTimestamp {
75+
return []DatapointWithTimestamp{NewDataPoint(datapoint, timestamp)}
7676
}
7777

7878
type limitedConcurrencyClient struct {

pkg/clients/cloudwatch/v1/client.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,9 @@ func toMetricDataResult(resp cloudwatch.GetMetricDataOutput) []cloudwatch_client
145145
for _, metricDataResult := range resp.MetricDataResults {
146146
mappedResult := cloudwatch_client.MetricDataResult{
147147
ID: *metricDataResult.Id,
148-
Datapoints: make([]*cloudwatch_client.DatapointWithTimestamp, 0, len(metricDataResult.Timestamps))}
148+
Datapoints: make([]cloudwatch_client.DatapointWithTimestamp, 0, len(metricDataResult.Timestamps))}
149149
for i := 0; i < len(metricDataResult.Timestamps); i++ {
150-
mappedResult.Datapoints = append(mappedResult.Datapoints, &cloudwatch_client.DatapointWithTimestamp{
150+
mappedResult.Datapoints = append(mappedResult.Datapoints, cloudwatch_client.DatapointWithTimestamp{
151151
Datapoint: metricDataResult.Values[i],
152152
Timestamp: *metricDataResult.Timestamps[i],
153153
})

pkg/clients/cloudwatch/v1/client_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func Test_toMetricDataResult(t *testing.T) {
6767
},
6868
},
6969
expectedMetricDataResults: []cloudwatch_client.MetricDataResult{
70-
{ID: "metric-1", Datapoints: []*cloudwatch_client.DatapointWithTimestamp{
70+
{ID: "metric-1", Datapoints: []cloudwatch_client.DatapointWithTimestamp{
7171
cloudwatch_client.NewDataPoint(aws.Float64(1.0), ts.Add(10*time.Minute)),
7272
cloudwatch_client.NewDataPoint(aws.Float64(2.0), ts.Add(5*time.Minute)),
7373
cloudwatch_client.NewDataPoint(aws.Float64(3.0), ts),
@@ -93,13 +93,13 @@ func Test_toMetricDataResult(t *testing.T) {
9393
},
9494
},
9595
expectedMetricDataResults: []cloudwatch_client.MetricDataResult{
96-
{ID: "metric-1", Datapoints: []*cloudwatch_client.DatapointWithTimestamp{
96+
{ID: "metric-1", Datapoints: []cloudwatch_client.DatapointWithTimestamp{
9797
cloudwatch_client.NewDataPoint(aws.Float64(1.0), ts.Add(10*time.Minute)),
9898
cloudwatch_client.NewDataPoint(aws.Float64(2.0), ts.Add(5*time.Minute)),
9999
cloudwatch_client.NewDataPoint(aws.Float64(3.0), ts)},
100100
},
101101
{ID: "metric-2",
102-
Datapoints: []*cloudwatch_client.DatapointWithTimestamp{}},
102+
Datapoints: []cloudwatch_client.DatapointWithTimestamp{}},
103103
},
104104
},
105105
}

pkg/clients/cloudwatch/v2/client.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,10 +151,10 @@ func toMetricDataResult(resp cloudwatch.GetMetricDataOutput) []cloudwatch_client
151151
for _, metricDataResult := range resp.MetricDataResults {
152152
mappedResult := cloudwatch_client.MetricDataResult{
153153
ID: *metricDataResult.Id,
154-
Datapoints: make([]*cloudwatch_client.DatapointWithTimestamp, 0, len(metricDataResult.Timestamps)),
154+
Datapoints: make([]cloudwatch_client.DatapointWithTimestamp, 0, len(metricDataResult.Timestamps)),
155155
}
156156
for i := 0; i < len(metricDataResult.Timestamps); i++ {
157-
mappedResult.Datapoints = append(mappedResult.Datapoints, &cloudwatch_client.DatapointWithTimestamp{
157+
mappedResult.Datapoints = append(mappedResult.Datapoints, cloudwatch_client.DatapointWithTimestamp{
158158
Datapoint: &metricDataResult.Values[i],
159159
Timestamp: metricDataResult.Timestamps[i],
160160
})

pkg/clients/cloudwatch/v2/client_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func Test_toMetricDataResult(t *testing.T) {
5252
},
5353
},
5454
expectedMetricDataResults: []cloudwatch_client.MetricDataResult{
55-
{ID: "metric-1", Datapoints: []*cloudwatch_client.DatapointWithTimestamp{
55+
{ID: "metric-1", Datapoints: []cloudwatch_client.DatapointWithTimestamp{
5656
cloudwatch_client.NewDataPoint(aws.Float64(1.0), ts.Add(10*time.Minute)),
5757
cloudwatch_client.NewDataPoint(aws.Float64(2.0), ts.Add(5*time.Minute)),
5858
cloudwatch_client.NewDataPoint(aws.Float64(3.0), ts),
@@ -78,12 +78,12 @@ func Test_toMetricDataResult(t *testing.T) {
7878
},
7979
},
8080
expectedMetricDataResults: []cloudwatch_client.MetricDataResult{
81-
{ID: "metric-1", Datapoints: []*cloudwatch_client.DatapointWithTimestamp{
81+
{ID: "metric-1", Datapoints: []cloudwatch_client.DatapointWithTimestamp{
8282
cloudwatch_client.NewDataPoint(aws.Float64(1.0), ts.Add(10*time.Minute)),
8383
cloudwatch_client.NewDataPoint(aws.Float64(2.0), ts.Add(5*time.Minute)),
8484
cloudwatch_client.NewDataPoint(aws.Float64(3.0), ts),
8585
}},
86-
{ID: "metric-2", Datapoints: []*cloudwatch_client.DatapointWithTimestamp{}},
86+
{ID: "metric-2", Datapoints: []cloudwatch_client.DatapointWithTimestamp{}},
8787
},
8888
},
8989
}

pkg/job/getmetricdata/processor.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ func mapResultsToBatch(logger *slog.Logger, results []cloudwatch.MetricDataResul
132132
if batch[id].GetMetricDataResult == nil {
133133
cloudwatchData := batch[id]
134134

135-
mappedDataPoints := make([]*model.DatapointWithTimestamp, 0, len(entry.Datapoints))
135+
mappedDataPoints := make([]model.DatapointWithTimestamp, 0, len(entry.Datapoints))
136136
for i := 0; i < len(entry.Datapoints); i++ {
137137
mappedDataPoints = append(mappedDataPoints, model.NewDataPoint(entry.Datapoints[i].Datapoint, entry.Datapoints[i].Timestamp))
138138
}

pkg/job/getmetricdata/processor_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ func TestProcessor_Run(t *testing.T) {
135135
MetricName: "MetricTwo",
136136
GetMetricDataResult: &model.GetMetricDataResult{
137137
Statistic: "Max",
138-
Datapoints: []*model.DatapointWithTimestamp{},
138+
Datapoints: []model.DatapointWithTimestamp{},
139139
},
140140
},
141141
},

pkg/model/model.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -204,23 +204,23 @@ type MetricMigrationParams struct {
204204

205205
type GetMetricDataResult struct {
206206
Statistic string
207-
Datapoints []*DatapointWithTimestamp
207+
Datapoints []DatapointWithTimestamp
208208
}
209209

210210
type DatapointWithTimestamp struct {
211211
Timestamp time.Time
212212
Datapoint *float64
213213
}
214214

215-
func NewDataPoint(datapoint *float64, timestamp time.Time) *DatapointWithTimestamp {
216-
return &DatapointWithTimestamp{
215+
func NewDataPoint(datapoint *float64, timestamp time.Time) DatapointWithTimestamp {
216+
return DatapointWithTimestamp{
217217
Timestamp: timestamp,
218218
Datapoint: datapoint,
219219
}
220220
}
221221

222-
func SingleDataPoint(datapoint *float64, timestamp time.Time) []*DatapointWithTimestamp {
223-
return []*DatapointWithTimestamp{NewDataPoint(datapoint, timestamp)}
222+
func SingleDataPoint(datapoint *float64, timestamp time.Time) []DatapointWithTimestamp {
223+
return []DatapointWithTimestamp{NewDataPoint(datapoint, timestamp)}
224224
}
225225

226226
// TaggedResource is an AWS resource with tags

pkg/promutil/migrate.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ func statisticsInCloudwatchData(d *model.CloudwatchData) []string {
165165
return []string{}
166166
}
167167

168-
func getDatapoints(cwd *model.CloudwatchData, statistic string) ([]*model.DatapointWithTimestamp, error) {
168+
func getDatapoints(cwd *model.CloudwatchData, statistic string) ([]model.DatapointWithTimestamp, error) {
169169
// Not possible but for sanity
170170
if cwd.GetMetricStatisticsResult == nil && cwd.GetMetricDataResult == nil {
171171
return nil, fmt.Errorf("cannot map a data point with no results on %s", cwd.MetricName)
@@ -174,7 +174,7 @@ func getDatapoints(cwd *model.CloudwatchData, statistic string) ([]*model.Datapo
174174
if cwd.GetMetricDataResult != nil {
175175
// If we have no datapoints, we should return a single nil datapoint, which is then either dropped or converted to 0
176176
if len(cwd.GetMetricDataResult.Datapoints) == 0 && !cwd.MetricMigrationParams.AddCloudwatchTimestamp {
177-
return []*model.DatapointWithTimestamp{{
177+
return []model.DatapointWithTimestamp{{
178178
Datapoint: nil,
179179
Timestamp: time.Time{},
180180
}}, nil
@@ -191,27 +191,27 @@ func getDatapoints(cwd *model.CloudwatchData, statistic string) ([]*model.Datapo
191191
switch {
192192
case statistic == "Maximum":
193193
if datapoint.Maximum != nil {
194-
return []*model.DatapointWithTimestamp{{Datapoint: datapoint.Maximum, Timestamp: *datapoint.Timestamp}}, nil
194+
return []model.DatapointWithTimestamp{{Datapoint: datapoint.Maximum, Timestamp: *datapoint.Timestamp}}, nil
195195
}
196196
case statistic == "Minimum":
197197
if datapoint.Minimum != nil {
198-
return []*model.DatapointWithTimestamp{{Datapoint: datapoint.Minimum, Timestamp: *datapoint.Timestamp}}, nil
198+
return []model.DatapointWithTimestamp{{Datapoint: datapoint.Minimum, Timestamp: *datapoint.Timestamp}}, nil
199199
}
200200
case statistic == "Sum":
201201
if datapoint.Sum != nil {
202-
return []*model.DatapointWithTimestamp{{Datapoint: datapoint.Sum, Timestamp: *datapoint.Timestamp}}, nil
202+
return []model.DatapointWithTimestamp{{Datapoint: datapoint.Sum, Timestamp: *datapoint.Timestamp}}, nil
203203
}
204204
case statistic == "SampleCount":
205205
if datapoint.SampleCount != nil {
206-
return []*model.DatapointWithTimestamp{{Datapoint: datapoint.SampleCount, Timestamp: *datapoint.Timestamp}}, nil
206+
return []model.DatapointWithTimestamp{{Datapoint: datapoint.SampleCount, Timestamp: *datapoint.Timestamp}}, nil
207207
}
208208
case statistic == "Average":
209209
if datapoint.Average != nil {
210210
averageDataPoints = append(averageDataPoints, datapoint)
211211
}
212212
case Percentile.MatchString(statistic):
213213
if data, ok := datapoint.ExtendedStatistics[statistic]; ok {
214-
return []*model.DatapointWithTimestamp{{Datapoint: data, Timestamp: *datapoint.Timestamp}}, nil
214+
return []model.DatapointWithTimestamp{{Datapoint: data, Timestamp: *datapoint.Timestamp}}, nil
215215
}
216216
default:
217217
return nil, fmt.Errorf("invalid statistic requested on metric %s: %s", cwd.MetricName, statistic)
@@ -229,7 +229,7 @@ func getDatapoints(cwd *model.CloudwatchData, statistic string) ([]*model.Datapo
229229
total += *p.Average
230230
}
231231
average := total / float64(len(averageDataPoints))
232-
return []*model.DatapointWithTimestamp{{Datapoint: &average, Timestamp: timestamp}}, nil
232+
return []model.DatapointWithTimestamp{{Datapoint: &average, Timestamp: timestamp}}, nil
233233
}
234234
return nil, nil
235235
}

pkg/promutil/migrate_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ func TestBuildMetrics(t *testing.T) {
401401
},
402402
GetMetricDataResult: &model.GetMetricDataResult{
403403
Statistic: "Average",
404-
Datapoints: []*model.DatapointWithTimestamp{
404+
Datapoints: []model.DatapointWithTimestamp{
405405
model.NewDataPoint(aws.Float64(4), ts),
406406
model.NewDataPoint(aws.Float64(5), ts.Add(-1*time.Minute)),
407407
model.NewDataPoint(aws.Float64(6), ts.Add(-2*time.Minute)),

0 commit comments

Comments
 (0)