From 7948ffe42d95e7a0c40d0219fde923a901a3d8c8 Mon Sep 17 00:00:00 2001 From: "Heres, Daniel" Date: Sun, 25 Jul 2021 06:59:57 +0200 Subject: [PATCH 1/6] add inlining for from_trusted_len_iter functions --- src/buffer/mutable.rs | 2 ++ src/compute/take/generic_binary.rs | 1 - src/compute/take/primitive.rs | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/buffer/mutable.rs b/src/buffer/mutable.rs index 971c276c582..338a4439b3c 100644 --- a/src/buffer/mutable.rs +++ b/src/buffer/mutable.rs @@ -372,6 +372,7 @@ impl MutableBuffer { /// # Safety /// This method assumes that the iterator's size is correct and is undefined behavior /// to use it on an iterator that reports an incorrect length. + #[inline] pub unsafe fn extend_from_trusted_len_iter_unchecked>( &mut self, iterator: I, @@ -461,6 +462,7 @@ impl MutableBuffer { /// # Safety /// This method assumes that the iterator's size is correct and is undefined behavior /// to use it on an iterator that reports an incorrect length. + #[inline] pub unsafe fn try_from_trusted_len_iter_unchecked< E, I: Iterator>, diff --git a/src/compute/take/generic_binary.rs b/src/compute/take/generic_binary.rs index 3d418aaeb04..4d9af24bb30 100644 --- a/src/compute/take/generic_binary.rs +++ b/src/compute/take/generic_binary.rs @@ -14,7 +14,6 @@ // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. - use crate::{ array::{Array, GenericBinaryArray, Offset, PrimitiveArray}, bitmap::{Bitmap, MutableBitmap}, diff --git a/src/compute/take/primitive.rs b/src/compute/take/primitive.rs index cff907a0155..8fdba3b4ad6 100644 --- a/src/compute/take/primitive.rs +++ b/src/compute/take/primitive.rs @@ -14,7 +14,6 @@ // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. - use crate::{ array::{Array, PrimitiveArray}, bitmap::{Bitmap, MutableBitmap}, From ac2d64de746a12595f779afc9764eb45ba2a90fc Mon Sep 17 00:00:00 2001 From: "Heres, Daniel" Date: Sun, 25 Jul 2021 07:09:56 +0200 Subject: [PATCH 2/6] add inlining for bitmap --- src/bitmap/mutable.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/bitmap/mutable.rs b/src/bitmap/mutable.rs index f2b94e2709c..ef8e64f9bdf 100644 --- a/src/bitmap/mutable.rs +++ b/src/bitmap/mutable.rs @@ -348,6 +348,7 @@ impl MutableBitmap { } /// Creates a new [`MutableBitmap`] from an iterator of booleans. + #[inline] pub fn from_trusted_len_iter(iterator: I) -> Self where I: TrustedLen, @@ -362,6 +363,7 @@ impl MutableBitmap { } /// Creates a new [`MutableBitmap`] from an iterator of booleans. + #[inline] pub fn try_from_trusted_len_iter(iterator: I) -> std::result::Result where I: TrustedLen>, @@ -372,6 +374,7 @@ impl MutableBitmap { /// Creates a new [`MutableBitmap`] from an falible iterator of booleans. /// # Safety /// The caller must guarantee that the iterator is `TrustedLen`. + #[inline] pub unsafe fn try_from_trusted_len_iter_unchecked( mut iterator: I, ) -> std::result::Result From 2decfcc43eb1aae6625e8da63fdb37eec512bde3 Mon Sep 17 00:00:00 2001 From: "Heres, Daniel" Date: Sun, 25 Jul 2021 07:39:06 +0200 Subject: [PATCH 3/6] Remove try_from_trusted_len_iter_unchecked for now --- src/bitmap/mutable.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/bitmap/mutable.rs b/src/bitmap/mutable.rs index ef8e64f9bdf..49122538491 100644 --- a/src/bitmap/mutable.rs +++ b/src/bitmap/mutable.rs @@ -374,7 +374,6 @@ impl MutableBitmap { /// Creates a new [`MutableBitmap`] from an falible iterator of booleans. /// # Safety /// The caller must guarantee that the iterator is `TrustedLen`. - #[inline] pub unsafe fn try_from_trusted_len_iter_unchecked( mut iterator: I, ) -> std::result::Result From 39c093f56468d19b77a346b537a45df3713d721e Mon Sep 17 00:00:00 2001 From: "Heres, Daniel" Date: Sun, 25 Jul 2021 08:13:25 +0200 Subject: [PATCH 4/6] Remove inline from bitmap for now --- src/bitmap/mutable.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/bitmap/mutable.rs b/src/bitmap/mutable.rs index 49122538491..f2b94e2709c 100644 --- a/src/bitmap/mutable.rs +++ b/src/bitmap/mutable.rs @@ -348,7 +348,6 @@ impl MutableBitmap { } /// Creates a new [`MutableBitmap`] from an iterator of booleans. - #[inline] pub fn from_trusted_len_iter(iterator: I) -> Self where I: TrustedLen, @@ -363,7 +362,6 @@ impl MutableBitmap { } /// Creates a new [`MutableBitmap`] from an iterator of booleans. - #[inline] pub fn try_from_trusted_len_iter(iterator: I) -> std::result::Result where I: TrustedLen>, From 29510222469754aa7beeac0d379db8a70654e3ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20Heres?= Date: Sun, 25 Jul 2021 09:39:10 +0200 Subject: [PATCH 5/6] Update src/buffer/mutable.rs Co-authored-by: Jorge Leitao --- src/buffer/mutable.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/buffer/mutable.rs b/src/buffer/mutable.rs index 338a4439b3c..c4d743da7fe 100644 --- a/src/buffer/mutable.rs +++ b/src/buffer/mutable.rs @@ -372,6 +372,7 @@ impl MutableBuffer { /// # Safety /// This method assumes that the iterator's size is correct and is undefined behavior /// to use it on an iterator that reports an incorrect length. + // This inline has been validated to offer 50% improvement in operations like `take`. #[inline] pub unsafe fn extend_from_trusted_len_iter_unchecked>( &mut self, From 558bfa269866beec13fc4f8ea249c5e0452cfb15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20Heres?= Date: Sun, 25 Jul 2021 09:39:17 +0200 Subject: [PATCH 6/6] Update src/buffer/mutable.rs Co-authored-by: Jorge Leitao --- src/buffer/mutable.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/buffer/mutable.rs b/src/buffer/mutable.rs index c4d743da7fe..7cf5cdae394 100644 --- a/src/buffer/mutable.rs +++ b/src/buffer/mutable.rs @@ -463,6 +463,7 @@ impl MutableBuffer { /// # Safety /// This method assumes that the iterator's size is correct and is undefined behavior /// to use it on an iterator that reports an incorrect length. + // This inline has been validated to offer 50% improvement in operations like `take`. #[inline] pub unsafe fn try_from_trusted_len_iter_unchecked< E,