make unzip faster: seq[i]=val can be 7X faster than seq.add(elem) (#13448)
This commit is contained in:
parent
1d90d9816b
commit
e05aca8734
1 changed files with 5 additions and 5 deletions
|
|
@ -290,11 +290,11 @@ proc unzip*[S, T](s: openArray[(S, T)]): (seq[S], seq[T]) {.since: (1, 1).} =
|
||||||
unzipped2 = @['a', 'b', 'c']
|
unzipped2 = @['a', 'b', 'c']
|
||||||
assert zipped.unzip() == (unzipped1, unzipped2)
|
assert zipped.unzip() == (unzipped1, unzipped2)
|
||||||
assert zip(unzipped1, unzipped2).unzip() == (unzipped1, unzipped2)
|
assert zip(unzipped1, unzipped2).unzip() == (unzipped1, unzipped2)
|
||||||
result[0] = newSeqOfCap[S](s.len)
|
result[0] = newSeq[S](s.len)
|
||||||
result[1] = newSeqOfCap[T](s.len)
|
result[1] = newSeq[T](s.len)
|
||||||
for elem in s:
|
for i in 0..<s.len:
|
||||||
result[0].add(elem[0])
|
result[0][i] = s[i][0]
|
||||||
result[1].add(elem[1])
|
result[1][i] = s[i][1]
|
||||||
|
|
||||||
proc distribute*[T](s: seq[T], num: Positive, spread = true): seq[seq[T]] =
|
proc distribute*[T](s: seq[T], num: Positive, spread = true): seq[seq[T]] =
|
||||||
## Splits and distributes a sequence `s` into `num` sub-sequences.
|
## Splits and distributes a sequence `s` into `num` sub-sequences.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue