From 9d2e9009560c55db2a1b573272cb86cf963a8c5f Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Thu, 23 Jul 2026 15:35:11 +0200 Subject: [PATCH 1/3] GH-50615: [C++] Reduce code generation for string kernels Some string kernels are generated twice for the corresponding binary and string type (for example binary/utf8, large_binary, large_utf8). Most of the time we can cut down on the code duplication to reduce compile times and binary size slightly. --- .../arrow/compute/kernels/codegen_internal.h | 48 +--- .../arrow/compute/kernels/scalar_compare.cc | 3 +- .../arrow/compute/kernels/scalar_if_else.cc | 2 +- .../compute/kernels/scalar_string_ascii.cc | 256 +++++++++++------- .../compute/kernels/scalar_string_internal.h | 45 +-- .../compute/kernels/scalar_string_test.cc | 80 ++++++ .../compute/kernels/scalar_string_utf8.cc | 11 +- .../compute/kernels/vector_array_sort.cc | 3 +- .../arrow/compute/kernels/vector_replace.cc | 9 +- 9 files changed, 285 insertions(+), 172 deletions(-) diff --git a/cpp/src/arrow/compute/kernels/codegen_internal.h b/cpp/src/arrow/compute/kernels/codegen_internal.h index 9d12d62d95f0..fa89c86183fc 100644 --- a/cpp/src/arrow/compute/kernels/codegen_internal.h +++ b/cpp/src/arrow/compute/kernels/codegen_internal.h @@ -1314,10 +1314,14 @@ KernelType GenerateTypeAgnosticPrimitive(detail::GetTypeId get_id) { } } -// similar to GenerateTypeAgnosticPrimitive, but for base variable binary types -template