From d0df3deb195b707c594fdb610a1728a5df5c5b0e Mon Sep 17 00:00:00 2001 From: Marco Gorelli <33491632+MarcoGorelli@users.noreply.github.com> Date: Fri, 5 Apr 2024 14:16:26 +0300 Subject: [PATCH] perf: speed up offset_by when a single offset is passed --- crates/polars-plan/src/dsl/function_expr/temporal.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/crates/polars-plan/src/dsl/function_expr/temporal.rs b/crates/polars-plan/src/dsl/function_expr/temporal.rs index df4c0a688488..2a4e76fd326f 100644 --- a/crates/polars-plan/src/dsl/function_expr/temporal.rs +++ b/crates/polars-plan/src/dsl/function_expr/temporal.rs @@ -200,9 +200,12 @@ fn apply_offsets_to_datetime( _ => Ok(Int64Chunked::full_null(datetime.0.name(), offsets.len())), }, (_, 1) => match offsets.get(0) { - Some(offset) => datetime.0.try_apply_nonnull_values_generic(|v| { - offset_fn(&Duration::parse(offset), v, time_zone) - }), + Some(offset) => { + let offset = &Duration::parse(offset); + datetime + .0 + .try_apply_nonnull_values_generic(|v| offset_fn(offset, v, time_zone)) + }, _ => Ok(datetime.0.apply(|_| None)), }, _ => try_binary_elementwise(datetime, offsets, |timestamp_opt, offset_opt| {