@@ -29,8 +29,7 @@ use parking_lot::Mutex;
2929use std:: sync:: Arc ;
3030use tokio:: runtime:: Runtime ;
3131
32- fn query ( ctx : Arc < Mutex < SessionContext > > , sql : & str ) {
33- let rt = Runtime :: new ( ) . unwrap ( ) ;
32+ fn query ( ctx : Arc < Mutex < SessionContext > > , rt : & Runtime , sql : & str ) {
3433 let df = rt. block_on ( ctx. lock ( ) . sql ( sql) ) . unwrap ( ) ;
3534 criterion:: black_box ( rt. block_on ( df. collect ( ) ) . unwrap ( ) ) ;
3635}
@@ -51,11 +50,13 @@ fn criterion_benchmark(c: &mut Criterion) {
5150 let array_len = 32768 * 2 ; // 2^16
5251 let batch_size = 2048 ; // 2^11
5352 let ctx = create_context ( partitions_len, array_len, batch_size) . unwrap ( ) ;
53+ let rt = Runtime :: new ( ) . unwrap ( ) ;
5454
5555 c. bench_function ( "aggregate_query_no_group_by 15 12" , |b| {
5656 b. iter ( || {
5757 query (
5858 ctx. clone ( ) ,
59+ & rt,
5960 "SELECT MIN(f64), AVG(f64), COUNT(f64) \
6061 FROM t",
6162 )
@@ -66,6 +67,7 @@ fn criterion_benchmark(c: &mut Criterion) {
6667 b. iter ( || {
6768 query (
6869 ctx. clone ( ) ,
70+ & rt,
6971 "SELECT MIN(f64), MAX(f64) \
7072 FROM t",
7173 )
@@ -76,6 +78,7 @@ fn criterion_benchmark(c: &mut Criterion) {
7678 b. iter ( || {
7779 query (
7880 ctx. clone ( ) ,
81+ & rt,
7982 "SELECT COUNT(DISTINCT u64_wide) \
8083 FROM t",
8184 )
@@ -86,6 +89,7 @@ fn criterion_benchmark(c: &mut Criterion) {
8689 b. iter ( || {
8790 query (
8891 ctx. clone ( ) ,
92+ & rt,
8993 "SELECT COUNT(DISTINCT u64_narrow) \
9094 FROM t",
9195 )
@@ -96,6 +100,7 @@ fn criterion_benchmark(c: &mut Criterion) {
96100 b. iter ( || {
97101 query (
98102 ctx. clone ( ) ,
103+ & rt,
99104 "SELECT utf8, MIN(f64), AVG(f64), COUNT(f64) \
100105 FROM t GROUP BY utf8",
101106 )
@@ -106,6 +111,7 @@ fn criterion_benchmark(c: &mut Criterion) {
106111 b. iter ( || {
107112 query (
108113 ctx. clone ( ) ,
114+ & rt,
109115 "SELECT utf8, MIN(f64), AVG(f64), COUNT(f64) \
110116 FROM t \
111117 WHERE f32 > 10 AND f32 < 20 GROUP BY utf8",
@@ -117,6 +123,7 @@ fn criterion_benchmark(c: &mut Criterion) {
117123 b. iter ( || {
118124 query (
119125 ctx. clone ( ) ,
126+ & rt,
120127 "SELECT u64_narrow, MIN(f64), AVG(f64), COUNT(f64) \
121128 FROM t GROUP BY u64_narrow",
122129 )
@@ -127,6 +134,7 @@ fn criterion_benchmark(c: &mut Criterion) {
127134 b. iter ( || {
128135 query (
129136 ctx. clone ( ) ,
137+ & rt,
130138 "SELECT u64_narrow, MIN(f64), AVG(f64), COUNT(f64) \
131139 FROM t \
132140 WHERE f32 > 10 AND f32 < 20 GROUP BY u64_narrow",
@@ -138,6 +146,7 @@ fn criterion_benchmark(c: &mut Criterion) {
138146 b. iter ( || {
139147 query (
140148 ctx. clone ( ) ,
149+ & rt,
141150 "SELECT u64_wide, utf8, MIN(f64), AVG(f64), COUNT(f64) \
142151 FROM t GROUP BY u64_wide, utf8",
143152 )
@@ -148,6 +157,7 @@ fn criterion_benchmark(c: &mut Criterion) {
148157 b. iter ( || {
149158 query (
150159 ctx. clone ( ) ,
160+ & rt,
151161 "SELECT utf8, approx_percentile_cont(u64_wide, 0.5, 2500) \
152162 FROM t GROUP BY utf8",
153163 )
@@ -158,6 +168,7 @@ fn criterion_benchmark(c: &mut Criterion) {
158168 b. iter ( || {
159169 query (
160170 ctx. clone ( ) ,
171+ & rt,
161172 "SELECT utf8, approx_percentile_cont(f32, 0.5, 2500) \
162173 FROM t GROUP BY utf8",
163174 )
@@ -168,6 +179,7 @@ fn criterion_benchmark(c: &mut Criterion) {
168179 b. iter ( || {
169180 query (
170181 ctx. clone ( ) ,
182+ & rt,
171183 "SELECT MEDIAN(DISTINCT u64_wide), MEDIAN(DISTINCT u64_narrow) \
172184 FROM t",
173185 )
@@ -178,6 +190,7 @@ fn criterion_benchmark(c: &mut Criterion) {
178190 b. iter ( || {
179191 query (
180192 ctx. clone ( ) ,
193+ & rt,
181194 "SELECT first_value(u64_wide order by f64, u64_narrow, utf8),\
182195 last_value(u64_wide order by f64, u64_narrow, utf8) \
183196 FROM t GROUP BY u64_narrow",
@@ -189,6 +202,7 @@ fn criterion_benchmark(c: &mut Criterion) {
189202 b. iter ( || {
190203 query (
191204 ctx. clone ( ) ,
205+ & rt,
192206 "SELECT first_value(u64_wide ignore nulls order by f64, u64_narrow, utf8), \
193207 last_value(u64_wide ignore nulls order by f64, u64_narrow, utf8) \
194208 FROM t GROUP BY u64_narrow",
@@ -200,6 +214,7 @@ fn criterion_benchmark(c: &mut Criterion) {
200214 b. iter ( || {
201215 query (
202216 ctx. clone ( ) ,
217+ & rt,
203218 "SELECT first_value(u64_wide order by f64), \
204219 last_value(u64_wide order by f64) \
205220 FROM t GROUP BY u64_narrow",
0 commit comments