@@ -104,14 +104,11 @@ func BenchmarkSingleQuery(b *testing.B) {
104
104
105
105
func BenchmarkRangeQuery (b * testing.B ) {
106
106
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
+ )
115
112
116
113
start := time .Unix (0 , 0 )
117
114
end := start .Add (2 * time .Hour )
@@ -273,42 +270,95 @@ func BenchmarkRangeQuery(b *testing.B) {
273
270
storage : sixHourDataset ,
274
271
},
275
272
}
273
+ b .Run ("fast" , func (b * testing.B ) {
274
+ sixHourDataset = setupStorage (b , 1000 , 3 , 6 * samplesPerHour )
275
+ defer sixHourDataset .Close ()
276
276
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 ) {
292
282
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 )
296
293
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
+ })
300
313
})
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 ) {
303
328
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 )
304
339
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
+ })
309
359
})
310
- })
311
- }
360
+ }
361
+ })
312
362
}
313
363
314
364
func BenchmarkNativeHistograms (b * testing.B ) {
0 commit comments