From 9ac298ac4023523735818a9dd54b9edd50a91617 Mon Sep 17 00:00:00 2001 From: Pol Dellaiera Date: Sun, 30 Jan 2022 21:17:24 +0100 Subject: [PATCH] refactor: Minor optimizations. --- src/Operation/DropWhile.php | 16 ++++++++++------ src/Operation/Since.php | 16 ++++++++++------ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/Operation/DropWhile.php b/src/Operation/DropWhile.php index 222c27ac4..1e15fad84 100644 --- a/src/Operation/DropWhile.php +++ b/src/Operation/DropWhile.php @@ -44,16 +44,20 @@ public function __invoke(): Closure * @return Generator */ static function (Iterator $iterator) use ($callbacks): Generator { + $skip = false; + foreach ($iterator as $key => $current) { - if (CallbacksArrayReducer::or()($callbacks, $current, $key, $iterator)) { + if (false === $skip) { + if (false === CallbacksArrayReducer::or()($callbacks, $current, $key, $iterator)) { + $skip = true; + + yield $key => $current; + } + continue; } - break; - } - - for (; $iterator->valid(); $iterator->next()) { - yield $iterator->key() => $iterator->current(); + yield $key => $current; } }; } diff --git a/src/Operation/Since.php b/src/Operation/Since.php index 3a18f24b0..1e7cb21a5 100644 --- a/src/Operation/Since.php +++ b/src/Operation/Since.php @@ -44,16 +44,20 @@ public function __invoke(): Closure * @return Generator */ static function (Iterator $iterator) use ($callbacks): Generator { + $skip = false; + foreach ($iterator as $key => $current) { - if (!CallbacksArrayReducer::or()($callbacks, $current, $key, $iterator)) { + if (false === $skip) { + if (true === CallbacksArrayReducer::or()($callbacks, $current, $key, $iterator)) { + $skip = true; + + yield $key => $current; + } + continue; } - break; - } - - for (; $iterator->valid(); $iterator->next()) { - yield $iterator->key() => $iterator->current(); + yield $key => $current; } }; }