Skip to content

Commit 9c31b7b

Browse files
authored
Optimize skip function in AsyncSeq
Replaced the old skip implementation with an optimized version using OptimizedSkipEnumerator.
1 parent 38eb995 commit 9c31b7b

1 file changed

Lines changed: 0 additions & 14 deletions

File tree

src/FSharp.Control.AsyncSeq/AsyncSeq.fs

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2074,20 +2074,6 @@ module AsyncSeq =
20742074
return int n
20752075
}
20762076

2077-
let skip count (source : AsyncSeq<'T>) : AsyncSeq<_> = asyncSeq {
2078-
if (count < 0) then invalidArg "count" "must be non-negative"
2079-
use ie = source.GetEnumerator()
2080-
let! move = ie.MoveNext()
2081-
let b = ref move
2082-
let n = ref count
2083-
while b.Value.IsSome do
2084-
if n.Value = 0 then
2085-
yield b.Value.Value
2086-
else
2087-
n := n.Value - 1
2088-
let! moven = ie.MoveNext()
2089-
b := moven }
2090-
20912077
let skip count (source : AsyncSeq<'T>) : AsyncSeq<_> =
20922078
if count < 0 then invalidArg "count" "must be non-negative"
20932079
AsyncSeqImpl(fun () -> new OptimizedSkipEnumerator<'T>(source.GetEnumerator(), count) :> IAsyncSeqEnumerator<'T>) :> AsyncSeq<'T>

0 commit comments

Comments
 (0)