diff options
author | Timothee Cour <timothee.cour2@gmail.com> | 2020-02-21 08:26:52 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-21 17:26:52 +0100 |
commit | e05aca8734702f0ad4beb0625780d354d7168bc7 (patch) | |
tree | efe375776d6f2ca3fb589ebb2edabd36ec53dbb9 | |
parent | 1d90d9816b7c2065e333a000bc0208fb6c145f10 (diff) | |
download | Nim-e05aca8734702f0ad4beb0625780d354d7168bc7.tar.gz |
make unzip faster: seq[i]=val can be 7X faster than seq.add(elem) (#13448)
-rw-r--r-- | lib/pure/collections/sequtils.nim | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/pure/collections/sequtils.nim b/lib/pure/collections/sequtils.nim index ac2201377..e32c784c6 100644 --- a/lib/pure/collections/sequtils.nim +++ b/lib/pure/collections/sequtils.nim @@ -290,11 +290,11 @@ proc unzip*[S, T](s: openArray[(S, T)]): (seq[S], seq[T]) {.since: (1, 1).} = unzipped2 = @['a', 'b', 'c'] assert zipped.unzip() == (unzipped1, unzipped2) assert zip(unzipped1, unzipped2).unzip() == (unzipped1, unzipped2) - result[0] = newSeqOfCap[S](s.len) - result[1] = newSeqOfCap[T](s.len) - for elem in s: - result[0].add(elem[0]) - result[1].add(elem[1]) + result[0] = newSeq[S](s.len) + result[1] = newSeq[T](s.len) + for i in 0..<s.len: + result[0][i] = s[i][0] + result[1][i] = s[i][1] proc distribute*[T](s: seq[T], num: Positive, spread = true): seq[seq[T]] = ## Splits and distributes a sequence `s` into `num` sub-sequences. |