From b8db919089915ca37e2f1327bfa3bcde1aa7d885 Mon Sep 17 00:00:00 2001 From: "Heres, Daniel" Date: Mon, 20 Sep 2021 00:59:20 +0200 Subject: [PATCH] Multi-versioning (30% speed up) --- src/compute/hash.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/compute/hash.rs b/src/compute/hash.rs index af538be7de4..c7f763d79e2 100644 --- a/src/compute/hash.rs +++ b/src/compute/hash.rs @@ -1,4 +1,5 @@ use ahash::{CallHasher, RandomState}; +use multiversion::multiversion; use std::hash::Hash; macro_rules! new_state { @@ -18,6 +19,8 @@ use crate::{ use super::arity::unary; /// Element-wise hash of a [`PrimitiveArray`]. Validity is preserved. +#[multiversion] +#[clone(target = "x86_64+aes+sse3+ssse3+avx+avx2")] pub fn hash_primitive(array: &PrimitiveArray) -> PrimitiveArray { let state = new_state!(); @@ -25,6 +28,8 @@ pub fn hash_primitive(array: &PrimitiveArray) -> Primit } /// Element-wise hash of a [`BooleanArray`]. Validity is preserved. +#[multiversion] +#[clone(target = "x86_64+aes+sse3+ssse3+avx+avx2")] pub fn hash_boolean(array: &BooleanArray) -> PrimitiveArray { let state = new_state!(); @@ -33,6 +38,8 @@ pub fn hash_boolean(array: &BooleanArray) -> PrimitiveArray { PrimitiveArray::::from_data(DataType::UInt64, values, array.validity().clone()) } +#[multiversion] +#[clone(target = "x86_64+aes+sse3+ssse3+avx+avx2")] /// Element-wise hash of a [`Utf8Array`]. Validity is preserved. pub fn hash_utf8(array: &Utf8Array) -> PrimitiveArray { let state = new_state!();