summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/IterableLike.scala
diff options
context:
space:
mode:
authorRex Kerr <ichoran@gmail.com>2014-12-26 17:54:50 -0800
committerRex Kerr <ichoran@gmail.com>2015-02-16 12:36:22 -0800
commitad7a2f2d497c59eb61284447b38ea2697f9ab738 (patch)
tree8c66ec20727c670d49235627c325e0dc67e82a52 /src/library/scala/collection/IterableLike.scala
parentda49d9a00ec373a0e7f2ffe946a897a65c9b0741 (diff)
downloadscala-ad7a2f2d497c59eb61284447b38ea2697f9ab738.tar.gz
scala-ad7a2f2d497c59eb61284447b38ea2697f9ab738.tar.bz2
scala-ad7a2f2d497c59eb61284447b38ea2697f9ab738.zip
Optimization of IterableLike.scala
Changed takeRight to have two tighter loops instead of one with a conditional. See about 10% performance improvement. Other changes were (surprisingly, in some cases) not a win. Overall, IterableLike is pretty well optimized.
Diffstat (limited to 'src/library/scala/collection/IterableLike.scala')
-rw-r--r--src/library/scala/collection/IterableLike.scala12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/library/scala/collection/IterableLike.scala b/src/library/scala/collection/IterableLike.scala
index 7643b84a8b..ecf64624e8 100644
--- a/src/library/scala/collection/IterableLike.scala
+++ b/src/library/scala/collection/IterableLike.scala
@@ -218,12 +218,12 @@ self =>
val b = newBuilder
b.sizeHintBounded(n, this)
val lead = this.iterator drop n
- var go = false
- for (x <- this) {
- if (lead.hasNext) lead.next()
- else go = true
- if (go) b += x
+ val it = this.iterator
+ while (lead.hasNext) {
+ lead.next()
+ it.next()
}
+ while (it.hasNext) b += it.next()
b.result()
}
@@ -283,7 +283,7 @@ self =>
var i = 0
for (x <- this) {
b += ((x, i))
- i +=1
+ i += 1
}
b.result()
}