From 0c56c1f39c55136d634623c985e821b136139565 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Thu, 23 Jul 2026 15:35:11 +0200 Subject: [PATCH] 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 d33ffacb2f55..f6b9cda940e4 100644 --- a/cpp/src/arrow/compute/kernels/codegen_internal.h +++ b/cpp/src/arrow/compute/kernels/codegen_internal.h @@ -1307,10 +1307,14 @@ KernelType GenerateTypeAgnosticPrimitive(detail::GetTypeId get_id) { } } -// similar to GenerateTypeAgnosticPrimitive, but for base variable binary types -template