diff --git a/arrow/benches/comparison_kernels.rs b/arrow/benches/comparison_kernels.rs index 5d18a62d13a1..c8aa7dfcf530 100644 --- a/arrow/benches/comparison_kernels.rs +++ b/arrow/benches/comparison_kernels.rs @@ -167,9 +167,9 @@ fn add_benchmark(c: &mut Criterion) { let string_right = StringArray::from_iter(array_gen); let string_view_right = StringViewArray::from_iter(string_right.iter()); - let scalar = StringArray::new_scalar("xxxx"); + let string_scalar = StringArray::new_scalar("xxxx"); c.bench_function("eq scalar StringArray", |b| { - b.iter(|| eq(&scalar, &string_left).unwrap()) + b.iter(|| eq(&string_scalar, &string_left).unwrap()) }); c.bench_function("lt scalar StringViewArray", |b| { @@ -192,8 +192,20 @@ fn add_benchmark(c: &mut Criterion) { }) }); - c.bench_function("eq scalar StringViewArray", |b| { - b.iter(|| eq(&scalar, &string_view_left).unwrap()) + // StringViewArray has special handling for strings with length <= 12 and length <= 4 + let string_view_scalar = StringViewArray::new_scalar("xxxx"); + c.bench_function("eq scalar StringViewArray 4 bytes", |b| { + b.iter(|| eq(&string_view_scalar, &string_view_left).unwrap()) + }); + + let string_view_scalar = StringViewArray::new_scalar("xxxxxx"); + c.bench_function("eq scalar StringViewArray 6 bytes", |b| { + b.iter(|| eq(&string_view_scalar, &string_view_left).unwrap()) + }); + + let string_view_scalar = StringViewArray::new_scalar("xxxxxxxxxxxxx"); + c.bench_function("eq scalar StringViewArray 13 bytes", |b| { + b.iter(|| eq(&string_view_scalar, &string_view_left).unwrap()) }); c.bench_function("eq StringArray StringArray", |b| { @@ -236,14 +248,31 @@ fn add_benchmark(c: &mut Criterion) { b.iter(|| bench_like_utf8view_scalar(&string_view_left, "%xxxx%")) }); - c.bench_function("like_utf8view scalar ends with", |b| { + // StringView has special handling for strings with length <= 12 and length <= 4 + c.bench_function("like_utf8view scalar ends with 4 bytes", |b| { b.iter(|| bench_like_utf8view_scalar(&string_view_left, "%xxxx")) }); - c.bench_function("like_utf8view scalar starts with", |b| { + c.bench_function("like_utf8view scalar ends with 6 bytes", |b| { + b.iter(|| bench_like_utf8view_scalar(&string_view_left, "%xxxxxx")) + }); + + c.bench_function("like_utf8view scalar ends with 13 bytes", |b| { + b.iter(|| bench_like_utf8view_scalar(&string_view_left, "%xxxxxxxxxxxxx")) + }); + + c.bench_function("like_utf8view scalar starts with 4 bytes", |b| { b.iter(|| bench_like_utf8view_scalar(&string_view_left, "xxxx%")) }); + c.bench_function("like_utf8view scalar starts with 6 bytes", |b| { + b.iter(|| bench_like_utf8view_scalar(&string_view_left, "xxxxxx%")) + }); + + c.bench_function("like_utf8view scalar starts with 13 bytes", |b| { + b.iter(|| bench_like_utf8view_scalar(&string_view_left, "xxxxxxxxxxxxx%")) + }); + c.bench_function("like_utf8view scalar complex", |b| { b.iter(|| bench_like_utf8view_scalar(&string_view_left, "%xx_xx%xxx")) });