Skip to content

Commit f4de032

Browse files
slow section added in the test block to build smaller dataset
Signed-off-by: bazooka3000 <[email protected]>
1 parent fcf8381 commit f4de032

File tree

2 files changed

+100
-39
lines changed

2 files changed

+100
-39
lines changed

Makefile

+13-2
Original file line numberDiff line numberDiff line change
@@ -98,19 +98,30 @@ benchmarks:
9898
.PHONY: bench-old
9999
bench-old: benchmarks
100100
@echo "Benchmarking old engine"
101-
@go test ./... -bench 'BenchmarkRangeQuery/.*/old_engine' -run none -count 5 | sed -u 's/\/old_engine//' > benchmarks/old.out
101+
@go test ./... -bench 'BenchmarkRangeQuery/slow/.*/old_engine' -run none -count 5 | sed -u 's/\/old_engine//' > benchmarks/old.out
102102
@go test ./... -bench 'BenchmarkNativeHistograms/.*/old_engine' -run none -count 5 | sed -u 's/\/old_engine//' >> benchmarks/old.out
103103

104104
.PHONY: bench-new
105105
bench-new: benchmarks
106106
@echo "Benchmarking new engine"
107-
@go test ./... -bench 'BenchmarkRangeQuery/.*/new_engine' -run none -count 5 | sed -u 's/\/new_engine//' > benchmarks/new.out
107+
@go test ./... -bench 'BenchmarkRangeQuery/slow/.*/new_engine' -run none -count 5 | sed -u 's/\/new_engine//' > benchmarks/new.out
108108
@go test ./... -bench 'BenchmarkNativeHistograms/.*/new_engine' -run none -count 5 | sed -u 's/\/new_engine//' >> benchmarks/new.out
109109

110110
.PHONY: benchmark
111111
benchmark: bench-old bench-new
112112
@benchstat benchmarks/old.out benchmarks/new.out
113113

114+
.PHONY : bench-fast
115+
bench-fast : benchmarks
116+
@mkdir -p benchmarks
117+
@echo "Benchmarking old engine"
118+
@go test ./engine -bench 'BenchmarkRangeQuery/fast/.*/old_engine' -run none -count 5 | sed -u 's/\/old_engine//' > benchmarks/old.out
119+
@go test ./engine -bench 'BenchmarkNativeHistograms/.*/old_engine' -run none -count 5 | sed -u 's/\/old_engine//' >> benchmarks/old.out
120+
@echo "Benchmarking new engine"
121+
@go test ./engine -bench 'BenchmarkRangeQuery/fast/.*/new_engine' -run none -count 5 | sed -u 's/\/new_engine//' > benchmarks/new.out
122+
@go test ./engine -bench 'BenchmarkNativeHistograms/.*/new_engine' -run none -count 5 | sed -u 's/\/new_engine//' >> benchmarks/new.out
123+
@benchstat benchmarks/old.out benchmarks/new.out
124+
114125
.PHONY: sync-parser
115126
sync-parser:
116127
@echo "Cleaning existing directories"

engine/bench_test.go

+87-37
Original file line numberDiff line numberDiff line change
@@ -104,14 +104,11 @@ func BenchmarkSingleQuery(b *testing.B) {
104104

105105
func BenchmarkRangeQuery(b *testing.B) {
106106
samplesPerHour := 60 * 2
107-
sixHourDataset := setupStorage(b, 1000, 3, 6*samplesPerHour)
108-
defer sixHourDataset.Close()
109-
110-
largeSixHourDataset := setupStorage(b, 10000, 10, 6*samplesPerHour)
111-
defer largeSixHourDataset.Close()
112-
113-
sevenDaysAndTwoHoursDataset := setupStorage(b, 1000, 3, (7*24+2)*samplesPerHour)
114-
defer sevenDaysAndTwoHoursDataset.Close()
107+
var (
108+
sixHourDataset *teststorage.TestStorage
109+
largeSixHourDataset *teststorage.TestStorage
110+
sevenDaysAndTwoHoursDataset *teststorage.TestStorage
111+
)
115112

116113
start := time.Unix(0, 0)
117114
end := start.Add(2 * time.Hour)
@@ -273,42 +270,95 @@ func BenchmarkRangeQuery(b *testing.B) {
273270
storage: sixHourDataset,
274271
},
275272
}
273+
b.Run("fast", func(b *testing.B) {
274+
sixHourDataset = setupStorage(b, 1000, 3, 6*samplesPerHour)
275+
defer sixHourDataset.Close()
276276

277-
for _, tc := range cases {
278-
b.Run(tc.name, func(b *testing.B) {
279-
b.ReportAllocs()
280-
b.Run("old_engine", func(b *testing.B) {
281-
opts := promql.EngineOpts{
282-
Logger: nil,
283-
Reg: nil,
284-
MaxSamples: 50000000,
285-
Timeout: 100 * time.Second,
286-
EnableAtModifier: true,
287-
EnableNegativeOffset: true,
288-
}
289-
engine := promql.NewEngine(opts)
290-
291-
b.ResetTimer()
277+
for _, tc := range cases {
278+
if tc.storage != sixHourDataset {
279+
b.Skip()
280+
}
281+
b.Run(tc.name, func(b *testing.B) {
292282
b.ReportAllocs()
293-
for i := 0; i < b.N; i++ {
294-
qry, err := engine.NewRangeQuery(context.Background(), tc.storage, nil, tc.query, start, end, step)
295-
testutil.Ok(b, err)
283+
b.Run("old_engine", func(b *testing.B) {
284+
opts := promql.EngineOpts{
285+
Logger: nil,
286+
Reg: nil,
287+
MaxSamples: 50000000,
288+
Timeout: 100 * time.Second,
289+
EnableAtModifier: true,
290+
EnableNegativeOffset: true,
291+
}
292+
engine := promql.NewEngine(opts)
296293

297-
oldResult := qry.Exec(context.Background())
298-
testutil.Ok(b, oldResult.Err)
299-
}
294+
b.ResetTimer()
295+
b.ReportAllocs()
296+
for i := 0; i < b.N; i++ {
297+
qry, err := engine.NewRangeQuery(context.Background(), tc.storage, nil, tc.query, start, end, step)
298+
testutil.Ok(b, err)
299+
300+
oldResult := qry.Exec(context.Background())
301+
testutil.Ok(b, oldResult.Err)
302+
}
303+
})
304+
b.Run("new_engine", func(b *testing.B) {
305+
b.ResetTimer()
306+
b.ReportAllocs()
307+
308+
for i := 0; i < b.N; i++ {
309+
newResult := executeRangeQuery(b, tc.query, tc.storage, start, end, step)
310+
testutil.Ok(b, newResult.Err)
311+
}
312+
})
300313
})
301-
b.Run("new_engine", func(b *testing.B) {
302-
b.ResetTimer()
314+
}
315+
})
316+
b.Run("slow", func(b *testing.B) {
317+
sixHourDataset = setupStorage(b, 1000, 3, 6*samplesPerHour)
318+
defer sixHourDataset.Close()
319+
320+
largeSixHourDataset = setupStorage(b, 10000, 10, 6*samplesPerHour)
321+
defer sixHourDataset.Close()
322+
323+
sevenDaysAndTwoHoursDataset = setupStorage(b, 1000, 3, (7*24+2)*samplesPerHour)
324+
defer sixHourDataset.Close()
325+
326+
for _, tc := range cases {
327+
b.Run(tc.name, func(b *testing.B) {
303328
b.ReportAllocs()
329+
b.Run("old_engine", func(b *testing.B) {
330+
opts := promql.EngineOpts{
331+
Logger: nil,
332+
Reg: nil,
333+
MaxSamples: 50000000,
334+
Timeout: 100 * time.Second,
335+
EnableAtModifier: true,
336+
EnableNegativeOffset: true,
337+
}
338+
engine := promql.NewEngine(opts)
304339

305-
for i := 0; i < b.N; i++ {
306-
newResult := executeRangeQuery(b, tc.query, tc.storage, start, end, step)
307-
testutil.Ok(b, newResult.Err)
308-
}
340+
b.ResetTimer()
341+
b.ReportAllocs()
342+
for i := 0; i < b.N; i++ {
343+
qry, err := engine.NewRangeQuery(context.Background(), tc.storage, nil, tc.query, start, end, step)
344+
testutil.Ok(b, err)
345+
346+
oldResult := qry.Exec(context.Background())
347+
testutil.Ok(b, oldResult.Err)
348+
}
349+
})
350+
b.Run("new_engine", func(b *testing.B) {
351+
b.ResetTimer()
352+
b.ReportAllocs()
353+
354+
for i := 0; i < b.N; i++ {
355+
newResult := executeRangeQuery(b, tc.query, tc.storage, start, end, step)
356+
testutil.Ok(b, newResult.Err)
357+
}
358+
})
309359
})
310-
})
311-
}
360+
}
361+
})
312362
}
313363

314364
func BenchmarkNativeHistograms(b *testing.B) {

0 commit comments

Comments
 (0)