diff options
author | Jeroen ter Voorde <jeroentv@windowslive.com> | 2014-05-14 22:26:26 +0200 |
---|---|---|
committer | Jeroen ter Voorde <jeroentv@windowslive.com> | 2014-06-19 22:06:14 +0200 |
commit | 099a426dd6a176e704f47ed665669bf093a6d3f6 (patch) | |
tree | 052bd2138b9403f7b19f3d383b4593b5e80a35c9 /src | |
parent | 300db2a1e3eefc2a6ed379c870bc7da42a26e69a (diff) | |
download | scala-099a426dd6a176e704f47ed665669bf093a6d3f6.tar.gz scala-099a426dd6a176e704f47ed665669bf093a6d3f6.tar.bz2 scala-099a426dd6a176e704f47ed665669bf093a6d3f6.zip |
SI-8589 Performance improvement for ArrayCharSequence.toString
Diffstat (limited to 'src')
-rw-r--r-- | src/library/scala/runtime/SeqCharSequence.scala | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/library/scala/runtime/SeqCharSequence.scala b/src/library/scala/runtime/SeqCharSequence.scala index d2084a6598..a7765994ec 100644 --- a/src/library/scala/runtime/SeqCharSequence.scala +++ b/src/library/scala/runtime/SeqCharSequence.scala @@ -41,5 +41,10 @@ final class ArrayCharSequence(val xs: Array[Char], start: Int, end: Int) extends new ArrayCharSequence(xs, start1, start1 + newlen) } } - override def toString = xs drop start take length mkString "" + override def toString = { + val start = math.max(this.start, 0) + val end = math.min(xs.length, start + length) + + if (start >= end) "" else new String(xs, start, end - start) + } } |