diff --git a/Cargo.lock b/Cargo.lock index 07fc77a88c178..f500265108ff5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1655,9 +1655,9 @@ dependencies = [ [[package]] name = "criterion" -version = "0.5.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" +checksum = "e1c047a62b0cc3e145fa84415a3191f628e980b194c2755aa12300a4e6cbd928" dependencies = [ "anes", "cast", @@ -1665,16 +1665,13 @@ dependencies = [ "clap 4.5.50", "criterion-plot", "futures", - "is-terminal", - "itertools 0.10.5", + "itertools 0.13.0", "num-traits", - "once_cell", "oorandom", "plotters", "rayon", "regex", "serde", - "serde_derive", "serde_json", "tinytemplate", "tokio", @@ -1683,12 +1680,12 @@ dependencies = [ [[package]] name = "criterion-plot" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +checksum = "9b1bcc0dc7dfae599d84ad0b1a55f80cde8af3725da8313b528da95ef783e338" dependencies = [ "cast", - "itertools 0.10.5", + "itertools 0.13.0", ] [[package]] @@ -3390,12 +3387,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - [[package]] name = "hex" version = "0.4.3" @@ -3828,32 +3819,12 @@ dependencies = [ "serde", ] -[[package]] -name = "is-terminal" -version = "0.4.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.59.0", -] - [[package]] name = "is_terminal_polyfill" version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.13.0" diff --git a/Cargo.toml b/Cargo.toml index cc3b7d81b9d04..f15929b4c2b00 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -108,7 +108,7 @@ async-trait = "0.1.89" bigdecimal = "0.4.8" bytes = "1.10" chrono = { version = "0.4.42", default-features = false } -criterion = "0.5.1" +criterion = "0.7" ctor = "0.6.1" dashmap = "6.0.1" datafusion = { path = "datafusion/core", version = "50.3.0", default-features = false } diff --git a/datafusion/core/benches/aggregate_query_sql.rs b/datafusion/core/benches/aggregate_query_sql.rs index 9da341ce2e926..87aeed49337eb 100644 --- a/datafusion/core/benches/aggregate_query_sql.rs +++ b/datafusion/core/benches/aggregate_query_sql.rs @@ -21,17 +21,19 @@ extern crate arrow; extern crate datafusion; mod data_utils; + use crate::criterion::Criterion; use data_utils::create_table_provider; use datafusion::error::Result; use datafusion::execution::context::SessionContext; use parking_lot::Mutex; +use std::hint::black_box; use std::sync::Arc; use tokio::runtime::Runtime; fn query(ctx: Arc>, rt: &Runtime, sql: &str) { let df = rt.block_on(ctx.lock().sql(sql)).unwrap(); - criterion::black_box(rt.block_on(df.collect()).unwrap()); + black_box(rt.block_on(df.collect()).unwrap()); } fn create_context( diff --git a/datafusion/core/benches/csv_load.rs b/datafusion/core/benches/csv_load.rs index 3f984757466d5..de0f0d8250572 100644 --- a/datafusion/core/benches/csv_load.rs +++ b/datafusion/core/benches/csv_load.rs @@ -21,12 +21,14 @@ extern crate arrow; extern crate datafusion; mod data_utils; + use crate::criterion::Criterion; use datafusion::error::Result; use datafusion::execution::context::SessionContext; use datafusion::prelude::CsvReadOptions; use datafusion::test_util::csv::TestCsvFile; use parking_lot::Mutex; +use std::hint::black_box; use std::sync::Arc; use std::time::Duration; use test_utils::AccessLogGenerator; @@ -39,7 +41,7 @@ fn load_csv( options: CsvReadOptions, ) { let df = rt.block_on(ctx.lock().read_csv(path, options)).unwrap(); - criterion::black_box(rt.block_on(df.collect()).unwrap()); + black_box(rt.block_on(df.collect()).unwrap()); } fn create_context() -> Result>> { diff --git a/datafusion/core/benches/dataframe.rs b/datafusion/core/benches/dataframe.rs index 12eb34719e4ba..00fa85918347a 100644 --- a/datafusion/core/benches/dataframe.rs +++ b/datafusion/core/benches/dataframe.rs @@ -26,6 +26,7 @@ use datafusion::datasource::MemTable; use datafusion::prelude::SessionContext; use datafusion_expr::col; use datafusion_functions::expr_fn::btrim; +use std::hint::black_box; use std::sync::Arc; use tokio::runtime::Runtime; @@ -45,7 +46,7 @@ fn create_context(field_count: u32) -> datafusion_common::Result, rt: &Runtime) { - criterion::black_box(rt.block_on(async { + black_box(rt.block_on(async { let mut data_frame = ctx.table("t").await.unwrap(); for i in 0..column_count { diff --git a/datafusion/core/benches/distinct_query_sql.rs b/datafusion/core/benches/distinct_query_sql.rs index c1ef55992689e..d05e8b13b2af3 100644 --- a/datafusion/core/benches/distinct_query_sql.rs +++ b/datafusion/core/benches/distinct_query_sql.rs @@ -30,12 +30,13 @@ use datafusion_execution::config::SessionConfig; use datafusion_execution::TaskContext; use parking_lot::Mutex; +use std::hint::black_box; use std::{sync::Arc, time::Duration}; use tokio::runtime::Runtime; fn query(ctx: Arc>, rt: &Runtime, sql: &str) { let df = rt.block_on(ctx.lock().sql(sql)).unwrap(); - criterion::black_box(rt.block_on(df.collect()).unwrap()); + black_box(rt.block_on(df.collect()).unwrap()); } fn create_context( @@ -124,8 +125,7 @@ async fn distinct_with_limit( } fn run(rt: &Runtime, plan: Arc, ctx: Arc) { - criterion::black_box(rt.block_on(distinct_with_limit(plan.clone(), ctx.clone()))) - .unwrap(); + black_box(rt.block_on(distinct_with_limit(plan.clone(), ctx.clone()))).unwrap(); } pub async fn create_context_sampled_data( diff --git a/datafusion/core/benches/filter_query_sql.rs b/datafusion/core/benches/filter_query_sql.rs index c82a1607184dc..16905e0f96605 100644 --- a/datafusion/core/benches/filter_query_sql.rs +++ b/datafusion/core/benches/filter_query_sql.rs @@ -24,13 +24,14 @@ use criterion::{criterion_group, criterion_main, Criterion}; use datafusion::prelude::SessionContext; use datafusion::{datasource::MemTable, error::Result}; use futures::executor::block_on; +use std::hint::black_box; use std::sync::Arc; use tokio::runtime::Runtime; async fn query(ctx: &SessionContext, rt: &Runtime, sql: &str) { // execute the query let df = rt.block_on(ctx.sql(sql)).unwrap(); - criterion::black_box(rt.block_on(df.collect()).unwrap()); + black_box(rt.block_on(df.collect()).unwrap()); } fn create_context(array_len: usize, batch_size: usize) -> Result { diff --git a/datafusion/core/benches/map_query_sql.rs b/datafusion/core/benches/map_query_sql.rs index 063b8e6c86bbf..09234546b2dfe 100644 --- a/datafusion/core/benches/map_query_sql.rs +++ b/datafusion/core/benches/map_query_sql.rs @@ -15,10 +15,11 @@ // specific language governing permissions and limitations // under the License. +use std::hint::black_box; use std::sync::Arc; use arrow::array::{ArrayRef, Int32Array, RecordBatch}; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use parking_lot::Mutex; use rand::prelude::ThreadRng; use rand::Rng; diff --git a/datafusion/core/benches/spm.rs b/datafusion/core/benches/spm.rs index 5c244832300e4..ecc3f908d4b15 100644 --- a/datafusion/core/benches/spm.rs +++ b/datafusion/core/benches/spm.rs @@ -15,6 +15,7 @@ // specific language governing permissions and limitations // under the License. +use std::hint::black_box; use std::sync::Arc; use arrow::array::{ArrayRef, Int32Array, Int64Array, RecordBatch, StringArray}; @@ -25,7 +26,7 @@ use datafusion_physical_plan::sorts::sort_preserving_merge::SortPreservingMergeE use datafusion_physical_plan::{collect, ExecutionPlan}; use criterion::async_executor::FuturesExecutor; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_datasource::memory::MemorySourceConfig; fn generate_spm_for_round_robin_tie_breaker( diff --git a/datafusion/core/benches/sql_planner.rs b/datafusion/core/benches/sql_planner.rs index a3044006cbb4f..6266a7184cf51 100644 --- a/datafusion/core/benches/sql_planner.rs +++ b/datafusion/core/benches/sql_planner.rs @@ -30,6 +30,7 @@ use datafusion::datasource::MemTable; use datafusion::execution::context::SessionContext; use datafusion_common::{config::Dialect, ScalarValue}; use datafusion_expr::col; +use std::hint::black_box; use std::path::PathBuf; use std::sync::Arc; use test_utils::tpcds::tpcds_schemas; @@ -43,12 +44,12 @@ const CLICKBENCH_DATA_PATH: &str = "data/hits_partitioned/"; /// Create a logical plan from the specified sql fn logical_plan(ctx: &SessionContext, rt: &Runtime, sql: &str) { - criterion::black_box(rt.block_on(ctx.sql(sql)).unwrap()); + black_box(rt.block_on(ctx.sql(sql)).unwrap()); } /// Create a physical ExecutionPlan (by way of logical plan) fn physical_plan(ctx: &SessionContext, rt: &Runtime, sql: &str) { - criterion::black_box(rt.block_on(async { + black_box(rt.block_on(async { ctx.sql(sql) .await .unwrap() @@ -145,7 +146,7 @@ fn benchmark_with_param_values_many_columns( rt.block_on(async { ctx.state().statement_to_plan(statement).await.unwrap() }); b.iter(|| { let plan = plan.clone(); - criterion::black_box(plan.with_param_values(vec![ScalarValue::from(1)]).unwrap()); + black_box(plan.with_param_values(vec![ScalarValue::from(1)]).unwrap()); }); } diff --git a/datafusion/core/benches/sql_planner_extended.rs b/datafusion/core/benches/sql_planner_extended.rs index 9e665ef40d2c9..aff7cb4d101d5 100644 --- a/datafusion/core/benches/sql_planner_extended.rs +++ b/datafusion/core/benches/sql_planner_extended.rs @@ -27,6 +27,7 @@ use datafusion_expr::{cast, col, lit, not, try_cast, when}; use datafusion_functions::expr_fn::{ btrim, length, regexp_like, regexp_replace, to_timestamp, upper, }; +use std::hint::black_box; use std::ops::Rem; use std::sync::Arc; use tokio::runtime::Runtime; @@ -223,9 +224,7 @@ fn criterion_benchmark(c: &mut Criterion) { c.bench_function("logical_plan_optimize", |b| { b.iter(|| { let df_clone = df.clone(); - criterion::black_box( - rt.block_on(async { df_clone.into_optimized_plan().unwrap() }), - ); + black_box(rt.block_on(async { df_clone.into_optimized_plan().unwrap() })); }) }); } diff --git a/datafusion/core/benches/struct_query_sql.rs b/datafusion/core/benches/struct_query_sql.rs index f9cc43d1ea2c5..5c7b427310827 100644 --- a/datafusion/core/benches/struct_query_sql.rs +++ b/datafusion/core/benches/struct_query_sql.rs @@ -24,13 +24,14 @@ use criterion::{criterion_group, criterion_main, Criterion}; use datafusion::prelude::SessionContext; use datafusion::{datasource::MemTable, error::Result}; use futures::executor::block_on; +use std::hint::black_box; use std::sync::Arc; use tokio::runtime::Runtime; async fn query(ctx: &SessionContext, rt: &Runtime, sql: &str) { // execute the query let df = rt.block_on(ctx.sql(sql)).unwrap(); - criterion::black_box(rt.block_on(df.collect()).unwrap()); + black_box(rt.block_on(df.collect()).unwrap()); } fn create_context(array_len: usize, batch_size: usize) -> Result { diff --git a/datafusion/core/benches/topk_aggregate.rs b/datafusion/core/benches/topk_aggregate.rs index cf3c7fa2e26fe..9a5fb7163be5c 100644 --- a/datafusion/core/benches/topk_aggregate.rs +++ b/datafusion/core/benches/topk_aggregate.rs @@ -16,6 +16,7 @@ // under the License. mod data_utils; + use arrow::util::pretty::pretty_format_batches; use criterion::{criterion_group, criterion_main, Criterion}; use data_utils::make_data; @@ -24,6 +25,7 @@ use datafusion::prelude::SessionContext; use datafusion::{datasource::MemTable, error::Result}; use datafusion_execution::config::SessionConfig; use datafusion_execution::TaskContext; +use std::hint::black_box; use std::sync::Arc; use tokio::runtime::Runtime; @@ -57,10 +59,8 @@ async fn create_context( } fn run(rt: &Runtime, plan: Arc, ctx: Arc, asc: bool) { - criterion::black_box( - rt.block_on(async { aggregate(plan.clone(), ctx.clone(), asc).await }), - ) - .unwrap(); + black_box(rt.block_on(async { aggregate(plan.clone(), ctx.clone(), asc).await })) + .unwrap(); } async fn aggregate( diff --git a/datafusion/core/benches/window_query_sql.rs b/datafusion/core/benches/window_query_sql.rs index a55d17a7c5dcf..6d83959f7eb3c 100644 --- a/datafusion/core/benches/window_query_sql.rs +++ b/datafusion/core/benches/window_query_sql.rs @@ -21,17 +21,19 @@ extern crate arrow; extern crate datafusion; mod data_utils; + use crate::criterion::Criterion; use data_utils::create_table_provider; use datafusion::error::Result; use datafusion::execution::context::SessionContext; use parking_lot::Mutex; +use std::hint::black_box; use std::sync::Arc; use tokio::runtime::Runtime; fn query(ctx: Arc>, rt: &Runtime, sql: &str) { let df = rt.block_on(ctx.lock().sql(sql)).unwrap(); - criterion::black_box(rt.block_on(df.collect()).unwrap()); + black_box(rt.block_on(df.collect()).unwrap()); } fn create_context( diff --git a/datafusion/functions-aggregate/benches/array_agg.rs b/datafusion/functions-aggregate/benches/array_agg.rs index 96444b018465c..83b0c4a4c659c 100644 --- a/datafusion/functions-aggregate/benches/array_agg.rs +++ b/datafusion/functions-aggregate/benches/array_agg.rs @@ -15,6 +15,7 @@ // specific language governing permissions and limitations // under the License. +use std::hint::black_box; use std::sync::Arc; use arrow::array::{ @@ -22,7 +23,7 @@ use arrow::array::{ PrimitiveArray, }; use arrow::datatypes::{Field, Int64Type}; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_expr::Accumulator; use datafusion_functions_aggregate::array_agg::ArrayAggAccumulator; diff --git a/datafusion/functions-aggregate/benches/count.rs b/datafusion/functions-aggregate/benches/count.rs index 2f42d66c7c38e..53484652fd251 100644 --- a/datafusion/functions-aggregate/benches/count.rs +++ b/datafusion/functions-aggregate/benches/count.rs @@ -15,6 +15,7 @@ // specific language governing permissions and limitations // under the License. +use std::hint::black_box; use std::sync::Arc; use arrow::array::{ArrayRef, BooleanArray}; @@ -29,7 +30,7 @@ use datafusion_expr::{Accumulator, AggregateUDFImpl, GroupsAccumulator}; use datafusion_functions_aggregate::count::Count; use datafusion_physical_expr::expressions::col; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; fn prepare_group_accumulator() -> Box { let schema = Arc::new(Schema::new(vec![Field::new("f", DataType::Int32, true)])); diff --git a/datafusion/functions-aggregate/benches/sum.rs b/datafusion/functions-aggregate/benches/sum.rs index 6a21595927ecc..d85f0686224b3 100644 --- a/datafusion/functions-aggregate/benches/sum.rs +++ b/datafusion/functions-aggregate/benches/sum.rs @@ -15,6 +15,7 @@ // specific language governing permissions and limitations // under the License. +use std::hint::black_box; use std::sync::Arc; use arrow::array::{ArrayRef, BooleanArray}; @@ -25,7 +26,7 @@ use datafusion_expr::{function::AccumulatorArgs, AggregateUDFImpl, GroupsAccumul use datafusion_functions_aggregate::sum::Sum; use datafusion_physical_expr::expressions::col; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; fn prepare_accumulator(data_type: &DataType) -> Box { let field = Field::new("f", data_type.clone(), true).into(); diff --git a/datafusion/functions-nested/benches/array_expression.rs b/datafusion/functions-nested/benches/array_expression.rs index 0e3ecbc726413..8d72ffa3c1cd5 100644 --- a/datafusion/functions-nested/benches/array_expression.rs +++ b/datafusion/functions-nested/benches/array_expression.rs @@ -22,6 +22,7 @@ extern crate arrow; use crate::criterion::Criterion; use datafusion_expr::lit; use datafusion_functions_nested::expr_fn::{array_replace_all, make_array}; +use std::hint::black_box; fn criterion_benchmark(c: &mut Criterion) { // Construct large arrays for benchmarking @@ -45,7 +46,7 @@ fn criterion_benchmark(c: &mut Criterion) { from_array.clone(), to_array.clone() ), - *criterion::black_box(&expected_array) + *black_box(&expected_array) ) }) }); diff --git a/datafusion/functions-nested/benches/map.rs b/datafusion/functions-nested/benches/map.rs index ca12dde1f5c39..a8c20d80f8026 100644 --- a/datafusion/functions-nested/benches/map.rs +++ b/datafusion/functions-nested/benches/map.rs @@ -20,7 +20,7 @@ extern crate criterion; use arrow::array::{Int32Array, ListArray, StringArray}; use arrow::buffer::{OffsetBuffer, ScalarBuffer}; use arrow::datatypes::{DataType, Field}; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_common::ScalarValue; use datafusion_expr::planner::ExprPlanner; @@ -30,6 +30,7 @@ use datafusion_functions_nested::planner::NestedFunctionPlanner; use rand::prelude::ThreadRng; use rand::Rng; use std::collections::HashSet; +use std::hint::black_box; use std::sync::Arc; fn keys(rng: &mut ThreadRng) -> Vec { diff --git a/datafusion/functions/benches/ascii.rs b/datafusion/functions/benches/ascii.rs index 55471817d2778..03d25e9c3d4fe 100644 --- a/datafusion/functions/benches/ascii.rs +++ b/datafusion/functions/benches/ascii.rs @@ -19,10 +19,11 @@ extern crate criterion; mod helper; use arrow::datatypes::{DataType, Field}; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_expr::ScalarFunctionArgs; use helper::gen_string_array; +use std::hint::black_box; use std::sync::Arc; fn criterion_benchmark(c: &mut Criterion) { diff --git a/datafusion/functions/benches/character_length.rs b/datafusion/functions/benches/character_length.rs index edb61c013e242..4a1a63d62765f 100644 --- a/datafusion/functions/benches/character_length.rs +++ b/datafusion/functions/benches/character_length.rs @@ -18,10 +18,11 @@ extern crate criterion; use arrow::datatypes::{DataType, Field}; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_expr::ScalarFunctionArgs; use helper::gen_string_array; +use std::hint::black_box; use std::sync::Arc; mod helper; diff --git a/datafusion/functions/benches/chr.rs b/datafusion/functions/benches/chr.rs index ec3f188f90844..8356cf7c31726 100644 --- a/datafusion/functions/benches/chr.rs +++ b/datafusion/functions/benches/chr.rs @@ -18,10 +18,11 @@ extern crate criterion; use arrow::{array::PrimitiveArray, datatypes::Int64Type}; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::string::chr; use rand::{Rng, SeedableRng}; +use std::hint::black_box; use arrow::datatypes::{DataType, Field}; use datafusion_common::config::ConfigOptions; diff --git a/datafusion/functions/benches/concat.rs b/datafusion/functions/benches/concat.rs index 15f9ffbd78025..09200139a244b 100644 --- a/datafusion/functions/benches/concat.rs +++ b/datafusion/functions/benches/concat.rs @@ -23,6 +23,7 @@ use datafusion_common::config::ConfigOptions; use datafusion_common::ScalarValue; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::string::concat; +use std::hint::black_box; use std::sync::Arc; fn create_args(size: usize, str_len: usize) -> Vec { @@ -51,7 +52,7 @@ fn criterion_benchmark(c: &mut Criterion) { group.bench_function(BenchmarkId::new("concat", size), |b| { b.iter(|| { let args_cloned = args.clone(); - criterion::black_box( + black_box( concat() .invoke_with_args(ScalarFunctionArgs { args: args_cloned, diff --git a/datafusion/functions/benches/cot.rs b/datafusion/functions/benches/cot.rs index 937d092cc0282..97f21ccd6d55e 100644 --- a/datafusion/functions/benches/cot.rs +++ b/datafusion/functions/benches/cot.rs @@ -21,9 +21,10 @@ use arrow::{ datatypes::{Float32Type, Float64Type}, util::bench_util::create_primitive_array, }; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::math::cot; +use std::hint::black_box; use arrow::datatypes::{DataType, Field}; use datafusion_common::config::ConfigOptions; diff --git a/datafusion/functions/benches/date_bin.rs b/datafusion/functions/benches/date_bin.rs index ea8705984f386..74390491d538c 100644 --- a/datafusion/functions/benches/date_bin.rs +++ b/datafusion/functions/benches/date_bin.rs @@ -17,11 +17,12 @@ extern crate criterion; +use std::hint::black_box; use std::sync::Arc; use arrow::array::{Array, ArrayRef, TimestampSecondArray}; use arrow::datatypes::Field; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_common::ScalarValue; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; diff --git a/datafusion/functions/benches/date_trunc.rs b/datafusion/functions/benches/date_trunc.rs index 70d372429b2d0..498a3e63ef290 100644 --- a/datafusion/functions/benches/date_trunc.rs +++ b/datafusion/functions/benches/date_trunc.rs @@ -17,11 +17,12 @@ extern crate criterion; +use std::hint::black_box; use std::sync::Arc; use arrow::array::{Array, ArrayRef, TimestampSecondArray}; use arrow::datatypes::Field; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_common::ScalarValue; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; diff --git a/datafusion/functions/benches/encoding.rs b/datafusion/functions/benches/encoding.rs index dc2529cd9fd76..98faee91e1911 100644 --- a/datafusion/functions/benches/encoding.rs +++ b/datafusion/functions/benches/encoding.rs @@ -20,10 +20,11 @@ extern crate criterion; use arrow::array::Array; use arrow::datatypes::{DataType, Field}; use arrow::util::bench_util::create_string_array_with_len; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::encoding; +use std::hint::black_box; use std::sync::Arc; fn criterion_benchmark(c: &mut Criterion) { diff --git a/datafusion/functions/benches/find_in_set.rs b/datafusion/functions/benches/find_in_set.rs index df7d7cc09dd23..a928f5655806c 100644 --- a/datafusion/functions/benches/find_in_set.rs +++ b/datafusion/functions/benches/find_in_set.rs @@ -22,13 +22,14 @@ use arrow::datatypes::{DataType, Field}; use arrow::util::bench_util::{ create_string_array_with_len, create_string_view_array_with_len, }; -use criterion::{black_box, criterion_group, criterion_main, Criterion, SamplingMode}; +use criterion::{criterion_group, criterion_main, Criterion, SamplingMode}; use datafusion_common::config::ConfigOptions; use datafusion_common::ScalarValue; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use rand::distr::Alphanumeric; use rand::prelude::StdRng; use rand::{Rng, SeedableRng}; +use std::hint::black_box; use std::sync::Arc; use std::time::Duration; diff --git a/datafusion/functions/benches/gcd.rs b/datafusion/functions/benches/gcd.rs index 913ed523543e0..19e196d9a3eab 100644 --- a/datafusion/functions/benches/gcd.rs +++ b/datafusion/functions/benches/gcd.rs @@ -22,12 +22,13 @@ use arrow::{ array::{ArrayRef, Int64Array}, datatypes::DataType, }; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_common::ScalarValue; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::math::gcd; use rand::Rng; +use std::hint::black_box; use std::sync::Arc; fn generate_i64_array(n_rows: usize) -> ArrayRef { diff --git a/datafusion/functions/benches/initcap.rs b/datafusion/functions/benches/initcap.rs index 7562e990ca16c..50aee8dbb9161 100644 --- a/datafusion/functions/benches/initcap.rs +++ b/datafusion/functions/benches/initcap.rs @@ -22,10 +22,11 @@ use arrow::datatypes::{DataType, Field}; use arrow::util::bench_util::{ create_string_array_with_len, create_string_view_array_with_len, }; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::unicode; +use std::hint::black_box; use std::sync::Arc; fn create_args( diff --git a/datafusion/functions/benches/isnan.rs b/datafusion/functions/benches/isnan.rs index f59c7af939ab2..4a90d45d66223 100644 --- a/datafusion/functions/benches/isnan.rs +++ b/datafusion/functions/benches/isnan.rs @@ -22,10 +22,11 @@ use arrow::{ datatypes::{Float32Type, Float64Type}, util::bench_util::create_primitive_array, }; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::math::isnan; +use std::hint::black_box; use std::sync::Arc; fn criterion_benchmark(c: &mut Criterion) { diff --git a/datafusion/functions/benches/iszero.rs b/datafusion/functions/benches/iszero.rs index 9752a9364b9f3..961cba7200ce0 100644 --- a/datafusion/functions/benches/iszero.rs +++ b/datafusion/functions/benches/iszero.rs @@ -22,10 +22,11 @@ use arrow::{ datatypes::{Float32Type, Float64Type}, util::bench_util::create_primitive_array, }; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::math::iszero; +use std::hint::black_box; use std::sync::Arc; fn criterion_benchmark(c: &mut Criterion) { diff --git a/datafusion/functions/benches/lower.rs b/datafusion/functions/benches/lower.rs index 83d437c6caa63..6a5178b87fdce 100644 --- a/datafusion/functions/benches/lower.rs +++ b/datafusion/functions/benches/lower.rs @@ -22,10 +22,11 @@ use arrow::datatypes::{DataType, Field}; use arrow::util::bench_util::{ create_string_array_with_len, create_string_view_array_with_len, }; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::string; +use std::hint::black_box; use std::sync::Arc; /// Create an array of args containing a StringArray, where all the values in the diff --git a/datafusion/functions/benches/ltrim.rs b/datafusion/functions/benches/ltrim.rs index 2712223506b9e..2a58a5bb2f19d 100644 --- a/datafusion/functions/benches/ltrim.rs +++ b/datafusion/functions/benches/ltrim.rs @@ -20,14 +20,15 @@ extern crate criterion; use arrow::array::{ArrayRef, LargeStringArray, StringArray, StringViewArray}; use arrow::datatypes::{DataType, Field}; use criterion::{ - black_box, criterion_group, criterion_main, measurement::Measurement, BenchmarkGroup, - Criterion, SamplingMode, + criterion_group, criterion_main, measurement::Measurement, BenchmarkGroup, Criterion, + SamplingMode, }; use datafusion_common::config::ConfigOptions; use datafusion_common::ScalarValue; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs, ScalarUDF}; use datafusion_functions::string; use rand::{distr::Alphanumeric, rngs::StdRng, Rng, SeedableRng}; +use std::hint::black_box; use std::{fmt, sync::Arc}; #[derive(Clone, Copy)] diff --git a/datafusion/functions/benches/make_date.rs b/datafusion/functions/benches/make_date.rs index f0494a9d3b4e4..15a895468db93 100644 --- a/datafusion/functions/benches/make_date.rs +++ b/datafusion/functions/benches/make_date.rs @@ -17,11 +17,12 @@ extern crate criterion; +use std::hint::black_box; use std::sync::Arc; use arrow::array::{Array, ArrayRef, Int32Array}; use arrow::datatypes::{DataType, Field}; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_common::ScalarValue; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; diff --git a/datafusion/functions/benches/nullif.rs b/datafusion/functions/benches/nullif.rs index 93ec687c4d0e4..d649697cc5188 100644 --- a/datafusion/functions/benches/nullif.rs +++ b/datafusion/functions/benches/nullif.rs @@ -19,11 +19,12 @@ extern crate criterion; use arrow::datatypes::{DataType, Field}; use arrow::util::bench_util::create_string_array_with_len; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_common::ScalarValue; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::core::nullif; +use std::hint::black_box; use std::sync::Arc; fn criterion_benchmark(c: &mut Criterion) { diff --git a/datafusion/functions/benches/pad.rs b/datafusion/functions/benches/pad.rs index 125559269a4f6..f92a69bbf4f92 100644 --- a/datafusion/functions/benches/pad.rs +++ b/datafusion/functions/benches/pad.rs @@ -27,6 +27,7 @@ use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::unicode::{lpad, rpad}; use rand::distr::{Distribution, Uniform}; use rand::Rng; +use std::hint::black_box; use std::sync::Arc; struct Filter { @@ -131,29 +132,17 @@ fn criterion_benchmark(c: &mut Criterion) { let args = create_args::(size, 32, false); group.bench_function(BenchmarkId::new("utf8 type", size), |b| { - b.iter(|| { - criterion::black_box( - invoke_pad_with_args(args.clone(), size, true).unwrap(), - ) - }) + b.iter(|| black_box(invoke_pad_with_args(args.clone(), size, true).unwrap())) }); let args = create_args::(size, 32, false); group.bench_function(BenchmarkId::new("largeutf8 type", size), |b| { - b.iter(|| { - criterion::black_box( - invoke_pad_with_args(args.clone(), size, true).unwrap(), - ) - }) + b.iter(|| black_box(invoke_pad_with_args(args.clone(), size, true).unwrap())) }); let args = create_args::(size, 32, true); group.bench_function(BenchmarkId::new("stringview type", size), |b| { - b.iter(|| { - criterion::black_box( - invoke_pad_with_args(args.clone(), size, true).unwrap(), - ) - }) + b.iter(|| black_box(invoke_pad_with_args(args.clone(), size, true).unwrap())) }); group.finish(); @@ -162,30 +151,18 @@ fn criterion_benchmark(c: &mut Criterion) { let args = create_args::(size, 32, false); group.bench_function(BenchmarkId::new("utf8 type", size), |b| { - b.iter(|| { - criterion::black_box( - invoke_pad_with_args(args.clone(), size, false).unwrap(), - ) - }) + b.iter(|| black_box(invoke_pad_with_args(args.clone(), size, false).unwrap())) }); let args = create_args::(size, 32, false); group.bench_function(BenchmarkId::new("largeutf8 type", size), |b| { - b.iter(|| { - criterion::black_box( - invoke_pad_with_args(args.clone(), size, false).unwrap(), - ) - }) + b.iter(|| black_box(invoke_pad_with_args(args.clone(), size, false).unwrap())) }); // rpad for stringview type let args = create_args::(size, 32, true); group.bench_function(BenchmarkId::new("stringview type", size), |b| { - b.iter(|| { - criterion::black_box( - invoke_pad_with_args(args.clone(), size, false).unwrap(), - ) - }) + b.iter(|| black_box(invoke_pad_with_args(args.clone(), size, false).unwrap())) }); group.finish(); diff --git a/datafusion/functions/benches/random.rs b/datafusion/functions/benches/random.rs index ac92aed586bae..88efb2d1b5b93 100644 --- a/datafusion/functions/benches/random.rs +++ b/datafusion/functions/benches/random.rs @@ -18,10 +18,11 @@ extern crate criterion; use arrow::datatypes::{DataType, Field}; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_expr::{ScalarFunctionArgs, ScalarUDFImpl}; use datafusion_functions::math::random::RandomFunc; +use std::hint::black_box; use std::sync::Arc; fn criterion_benchmark(c: &mut Criterion) { diff --git a/datafusion/functions/benches/regx.rs b/datafusion/functions/benches/regx.rs index c18241f799e36..a415330245bf5 100644 --- a/datafusion/functions/benches/regx.rs +++ b/datafusion/functions/benches/regx.rs @@ -21,7 +21,7 @@ use arrow::array::builder::StringBuilder; use arrow::array::{ArrayRef, AsArray, Int64Array, StringArray, StringViewArray}; use arrow::compute::cast; use arrow::datatypes::DataType; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_functions::regex::regexpcount::regexp_count_func; use datafusion_functions::regex::regexpinstr::regexp_instr_func; use datafusion_functions::regex::regexplike::regexp_like; @@ -31,6 +31,7 @@ use rand::distr::Alphanumeric; use rand::prelude::IndexedRandom; use rand::rngs::ThreadRng; use rand::Rng; +use std::hint::black_box; use std::iter; use std::sync::Arc; fn data(rng: &mut ThreadRng) -> StringArray { diff --git a/datafusion/functions/benches/repeat.rs b/datafusion/functions/benches/repeat.rs index 991a5a467c0e3..80ffa8ee38f1a 100644 --- a/datafusion/functions/benches/repeat.rs +++ b/datafusion/functions/benches/repeat.rs @@ -22,11 +22,12 @@ use arrow::datatypes::{DataType, Field}; use arrow::util::bench_util::{ create_string_array_with_len, create_string_view_array_with_len, }; -use criterion::{black_box, criterion_group, criterion_main, Criterion, SamplingMode}; +use criterion::{criterion_group, criterion_main, Criterion, SamplingMode}; use datafusion_common::config::ConfigOptions; use datafusion_common::DataFusionError; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::string; +use std::hint::black_box; use std::sync::Arc; use std::time::Duration; diff --git a/datafusion/functions/benches/reverse.rs b/datafusion/functions/benches/reverse.rs index acac674a6de06..b1eca654fb254 100644 --- a/datafusion/functions/benches/reverse.rs +++ b/datafusion/functions/benches/reverse.rs @@ -19,10 +19,11 @@ extern crate criterion; mod helper; use arrow::datatypes::{DataType, Field}; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_expr::ScalarFunctionArgs; use helper::gen_string_array; +use std::hint::black_box; use std::sync::Arc; fn criterion_benchmark(c: &mut Criterion) { diff --git a/datafusion/functions/benches/signum.rs b/datafusion/functions/benches/signum.rs index d56f3930d2678..24b8861e4d28c 100644 --- a/datafusion/functions/benches/signum.rs +++ b/datafusion/functions/benches/signum.rs @@ -22,10 +22,11 @@ use arrow::{ datatypes::{Field, Float32Type, Float64Type}, util::bench_util::create_primitive_array, }; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::math::signum; +use std::hint::black_box; use std::sync::Arc; fn criterion_benchmark(c: &mut Criterion) { diff --git a/datafusion/functions/benches/strpos.rs b/datafusion/functions/benches/strpos.rs index fc31abb23d849..18a99e44bf487 100644 --- a/datafusion/functions/benches/strpos.rs +++ b/datafusion/functions/benches/strpos.rs @@ -19,12 +19,13 @@ extern crate criterion; use arrow::array::{StringArray, StringViewArray}; use arrow::datatypes::{DataType, Field}; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use rand::distr::Alphanumeric; use rand::prelude::StdRng; use rand::{Rng, SeedableRng}; +use std::hint::black_box; use std::str::Chars; use std::sync::Arc; diff --git a/datafusion/functions/benches/substr.rs b/datafusion/functions/benches/substr.rs index f14f10894649f..771413458c1fb 100644 --- a/datafusion/functions/benches/substr.rs +++ b/datafusion/functions/benches/substr.rs @@ -22,11 +22,12 @@ use arrow::datatypes::{DataType, Field}; use arrow::util::bench_util::{ create_string_array_with_len, create_string_view_array_with_len, }; -use criterion::{black_box, criterion_group, criterion_main, Criterion, SamplingMode}; +use criterion::{criterion_group, criterion_main, Criterion, SamplingMode}; use datafusion_common::config::ConfigOptions; use datafusion_common::DataFusionError; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::unicode; +use std::hint::black_box; use std::sync::Arc; fn create_args_without_count( diff --git a/datafusion/functions/benches/substr_index.rs b/datafusion/functions/benches/substr_index.rs index 2cc381e4545ee..d0941d9baedda 100644 --- a/datafusion/functions/benches/substr_index.rs +++ b/datafusion/functions/benches/substr_index.rs @@ -17,11 +17,12 @@ extern crate criterion; +use std::hint::black_box; use std::sync::Arc; use arrow::array::{ArrayRef, Int64Array, StringArray}; use arrow::datatypes::{DataType, Field}; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::unicode::substr_index; diff --git a/datafusion/functions/benches/to_char.rs b/datafusion/functions/benches/to_char.rs index 9599b8677216c..945508aec7405 100644 --- a/datafusion/functions/benches/to_char.rs +++ b/datafusion/functions/benches/to_char.rs @@ -17,13 +17,14 @@ extern crate criterion; +use std::hint::black_box; use std::sync::Arc; use arrow::array::{ArrayRef, Date32Array, StringArray}; use arrow::datatypes::{DataType, Field}; use chrono::prelude::*; use chrono::TimeDelta; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_common::ScalarValue; use datafusion_common::ScalarValue::TimestampNanosecond; diff --git a/datafusion/functions/benches/to_hex.rs b/datafusion/functions/benches/to_hex.rs index cad9addab10ec..a75ed9258791e 100644 --- a/datafusion/functions/benches/to_hex.rs +++ b/datafusion/functions/benches/to_hex.rs @@ -19,10 +19,11 @@ extern crate criterion; use arrow::datatypes::{DataType, Field, Int32Type, Int64Type}; use arrow::util::bench_util::create_primitive_array; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::string; +use std::hint::black_box; use std::sync::Arc; fn criterion_benchmark(c: &mut Criterion) { diff --git a/datafusion/functions/benches/to_timestamp.rs b/datafusion/functions/benches/to_timestamp.rs index 7e15d896f83e3..a8f5c5816d4da 100644 --- a/datafusion/functions/benches/to_timestamp.rs +++ b/datafusion/functions/benches/to_timestamp.rs @@ -17,13 +17,14 @@ extern crate criterion; +use std::hint::black_box; use std::sync::Arc; use arrow::array::builder::StringBuilder; use arrow::array::{Array, ArrayRef, StringArray}; use arrow::compute::cast; use arrow::datatypes::{DataType, Field, TimeUnit}; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::datetime::to_timestamp; diff --git a/datafusion/functions/benches/trunc.rs b/datafusion/functions/benches/trunc.rs index 160eac913d2b6..6e225e0e7038b 100644 --- a/datafusion/functions/benches/trunc.rs +++ b/datafusion/functions/benches/trunc.rs @@ -21,9 +21,10 @@ use arrow::{ datatypes::{Field, Float32Type, Float64Type}, util::bench_util::create_primitive_array, }; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::math::trunc; +use std::hint::black_box; use arrow::datatypes::DataType; use datafusion_common::config::ConfigOptions; diff --git a/datafusion/functions/benches/upper.rs b/datafusion/functions/benches/upper.rs index 700f70b4b4f36..7328b32574a4a 100644 --- a/datafusion/functions/benches/upper.rs +++ b/datafusion/functions/benches/upper.rs @@ -19,10 +19,11 @@ extern crate criterion; use arrow::datatypes::{DataType, Field}; use arrow::util::bench_util::create_string_array_with_len; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_functions::string; +use std::hint::black_box; use std::sync::Arc; /// Create an array of args containing a StringArray, where all the values in the diff --git a/datafusion/functions/benches/uuid.rs b/datafusion/functions/benches/uuid.rs index f9345a97eb53c..1368e2f2af5d1 100644 --- a/datafusion/functions/benches/uuid.rs +++ b/datafusion/functions/benches/uuid.rs @@ -18,10 +18,11 @@ extern crate criterion; use arrow::datatypes::{DataType, Field}; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_expr::ScalarFunctionArgs; use datafusion_functions::string; +use std::hint::black_box; use std::sync::Arc; fn criterion_benchmark(c: &mut Criterion) { diff --git a/datafusion/optimizer/benches/projection_unnecessary.rs b/datafusion/optimizer/benches/projection_unnecessary.rs index c9f248fe49b5a..bdc59de4820b7 100644 --- a/datafusion/optimizer/benches/projection_unnecessary.rs +++ b/datafusion/optimizer/benches/projection_unnecessary.rs @@ -16,11 +16,12 @@ // under the License. use arrow::datatypes::{DataType, Field, Schema}; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::ToDFSchema; use datafusion_common::{Column, TableReference}; use datafusion_expr::{logical_plan::LogicalPlan, projection_schema, Expr}; use datafusion_optimizer::optimize_projections::is_projection_unnecessary; +use std::hint::black_box; use std::sync::Arc; fn is_projection_unnecessary_old( diff --git a/datafusion/physical-expr/benches/binary_op.rs b/datafusion/physical-expr/benches/binary_op.rs index 5b0f700fdb8aa..9bffd79dc00f9 100644 --- a/datafusion/physical-expr/benches/binary_op.rs +++ b/datafusion/physical-expr/benches/binary_op.rs @@ -20,13 +20,14 @@ use arrow::{ datatypes::{DataType, Field, Schema}, }; use arrow::{array::StringArray, record_batch::RecordBatch}; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_expr::{and, binary_expr, col, lit, or, Operator}; use datafusion_physical_expr::{ expressions::{BinaryExpr, Column}, planner::logical2physical, PhysicalExpr, }; +use std::hint::black_box; use std::sync::Arc; /// Generates BooleanArrays with different true/false distributions for benchmarking. diff --git a/datafusion/physical-expr/benches/case_when.rs b/datafusion/physical-expr/benches/case_when.rs index e52aeb1aee123..9ed6b58da7f7e 100644 --- a/datafusion/physical-expr/benches/case_when.rs +++ b/datafusion/physical-expr/benches/case_when.rs @@ -19,7 +19,7 @@ use arrow::array::{Array, ArrayRef, Int32Array, Int32Builder, StringArray}; use arrow::datatypes::{ArrowNativeTypeOp, Field, Schema}; use arrow::record_batch::RecordBatch; use arrow::util::test_util::seedable_rng; -use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion}; +use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion}; use datafusion_expr::Operator; use datafusion_physical_expr::expressions::{case, col, lit, BinaryExpr}; use datafusion_physical_expr_common::physical_expr::PhysicalExpr; @@ -29,6 +29,7 @@ use rand::distr::Alphanumeric; use rand::rngs::StdRng; use rand::{Rng, RngCore}; use std::fmt::{Display, Formatter}; +use std::hint::black_box; use std::ops::Range; use std::sync::Arc; diff --git a/datafusion/physical-expr/benches/in_list.rs b/datafusion/physical-expr/benches/in_list.rs index e91e8d1f137c1..778204055bbdd 100644 --- a/datafusion/physical-expr/benches/in_list.rs +++ b/datafusion/physical-expr/benches/in_list.rs @@ -18,11 +18,12 @@ use arrow::array::{Array, ArrayRef, Float32Array, Int32Array, StringArray}; use arrow::datatypes::{Field, Schema}; use arrow::record_batch::RecordBatch; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::ScalarValue; use datafusion_physical_expr::expressions::{col, in_list, lit}; use rand::distr::Alphanumeric; use rand::prelude::*; +use std::hint::black_box; use std::sync::Arc; fn do_bench(c: &mut Criterion, name: &str, values: ArrayRef, exprs: &[ScalarValue]) { diff --git a/datafusion/physical-expr/benches/is_null.rs b/datafusion/physical-expr/benches/is_null.rs index ce6ad6eac2c71..80b2907a9e989 100644 --- a/datafusion/physical-expr/benches/is_null.rs +++ b/datafusion/physical-expr/benches/is_null.rs @@ -17,9 +17,10 @@ use arrow::array::{builder::Int32Builder, RecordBatch}; use arrow::datatypes::{DataType, Field, Schema}; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_physical_expr::expressions::{Column, IsNotNullExpr, IsNullExpr}; use datafusion_physical_expr_common::physical_expr::PhysicalExpr; +use std::hint::black_box; use std::sync::Arc; fn criterion_benchmark(c: &mut Criterion) { diff --git a/datafusion/physical-plan/benches/aggregate_vectorized.rs b/datafusion/physical-plan/benches/aggregate_vectorized.rs index 5c28fcc20440d..3c1899406c985 100644 --- a/datafusion/physical-plan/benches/aggregate_vectorized.rs +++ b/datafusion/physical-plan/benches/aggregate_vectorized.rs @@ -31,6 +31,7 @@ use datafusion_physical_plan::aggregates::group_values::multi_group_by::bytes_vi use datafusion_physical_plan::aggregates::group_values::multi_group_by::primitive::PrimitiveGroupValueBuilder; use datafusion_physical_plan::aggregates::group_values::multi_group_by::GroupColumn; use rand::distr::{Bernoulli, Distribution}; +use std::hint::black_box; use std::sync::Arc; const SIZES: [usize; 3] = [1_000, 10_000, 100_000]; @@ -293,7 +294,7 @@ fn vectorized_equal_to( builder.vectorized_equal_to(rows, input, rows, &mut equal_to_results); // Make sure that the compiler does not optimize away the call - criterion::black_box(equal_to_results); + black_box(equal_to_results); }); }); } diff --git a/datafusion/spark/benches/char.rs b/datafusion/spark/benches/char.rs index e30e21f69d183..02eab7630d070 100644 --- a/datafusion/spark/benches/char.rs +++ b/datafusion/spark/benches/char.rs @@ -19,12 +19,13 @@ extern crate criterion; use arrow::datatypes::{DataType, Field}; use arrow::{array::PrimitiveArray, datatypes::Int64Type}; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use criterion::{criterion_group, criterion_main, Criterion}; use datafusion_common::config::ConfigOptions; use datafusion_expr::{ColumnarValue, ScalarFunctionArgs}; use datafusion_spark::function::string::char; use rand::rngs::StdRng; use rand::{Rng, SeedableRng}; +use std::hint::black_box; use std::sync::Arc; /// Returns fixed seedable RNG