From 9be2e5463396e4a5022745c9d61a8431d53e2f99 Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Wed, 20 Apr 2011 16:28:01 +0000 Subject: Some tweaks to slice to make it run faster, no ... Some tweaks to slice to make it run faster, no review. --- src/library/scala/collection/TraversableLike.scala | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/library/scala/collection/TraversableLike.scala') diff --git a/src/library/scala/collection/TraversableLike.scala b/src/library/scala/collection/TraversableLike.scala index 2d3a4c229c..fe1d5d7d77 100644 --- a/src/library/scala/collection/TraversableLike.scala +++ b/src/library/scala/collection/TraversableLike.scala @@ -434,10 +434,14 @@ trait TraversableLike[+A, +Repr] extends HasNewBuilder[A, Repr] def take(n: Int): Repr = slice(0, n) def drop(n: Int): Repr = - if (n <= 0) newBuilder ++= thisCollection result + if (n <= 0) { + val b = newBuilder + b.sizeHint(this) + b ++= thisCollection result + } else sliceWithKnownDelta(n, Int.MaxValue, -n) - def slice(from: Int, until: Int): Repr = sliceWithKnownBound(from max 0, until) + def slice(from: Int, until: Int): Repr = sliceWithKnownBound(math.max(from, 0), until) // Precondition: from >= 0, until > 0, builder already configured for building. private[this] def sliceInternal(from: Int, until: Int, b: Builder[A, Repr]): Repr = { -- cgit v1.2.3