From 03c146c868ad7830c79f25766ca2118027e22199 Mon Sep 17 00:00:00 2001 From: tonylevid Date: Tue, 30 Nov 2021 10:57:19 +0800 Subject: [PATCH 1/3] Optimize the execution time of the unique method When passing a large array, the unique method is very slow. This modification can increase the speed by hundreds of times, and it is also suitable for most scenarios. --- src/Illuminate/Collections/Collection.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Illuminate/Collections/Collection.php b/src/Illuminate/Collections/Collection.php index 33b5b5de78f6..53c139c709af 100644 --- a/src/Illuminate/Collections/Collection.php +++ b/src/Illuminate/Collections/Collection.php @@ -1454,6 +1454,10 @@ public function undot() */ public function unique($key = null, $strict = false) { + if ($key === null && $strict === false) { + return new static(array_unique($this->items, SORT_REGULAR)); + } + $callback = $this->valueRetriever($key); $exists = []; From fb185e43d3d73e002e1196a019f52b5402ca8e2b Mon Sep 17 00:00:00 2001 From: tonylevid Date: Tue, 30 Nov 2021 11:14:52 +0800 Subject: [PATCH 2/3] Optimize the execution time of the unique method --- src/Illuminate/Collections/Collection.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Illuminate/Collections/Collection.php b/src/Illuminate/Collections/Collection.php index 53c139c709af..1a0ab483c063 100644 --- a/src/Illuminate/Collections/Collection.php +++ b/src/Illuminate/Collections/Collection.php @@ -1457,7 +1457,7 @@ public function unique($key = null, $strict = false) if ($key === null && $strict === false) { return new static(array_unique($this->items, SORT_REGULAR)); } - + $callback = $this->valueRetriever($key); $exists = []; From d953bbbc1b35649f16ad0903cda610ee88f8ce64 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Tue, 30 Nov 2021 08:26:36 -0600 Subject: [PATCH 3/3] Update Collection.php --- src/Illuminate/Collections/Collection.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Illuminate/Collections/Collection.php b/src/Illuminate/Collections/Collection.php index 1a0ab483c063..622651991194 100644 --- a/src/Illuminate/Collections/Collection.php +++ b/src/Illuminate/Collections/Collection.php @@ -1454,7 +1454,7 @@ public function undot() */ public function unique($key = null, $strict = false) { - if ($key === null && $strict === false) { + if (is_null($key) && $strict === false) { return new static(array_unique($this->items, SORT_REGULAR)); }