diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-07-04 09:28:19 +0200 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-07-04 09:28:19 +0200 |
commit | d74da160b0583eed00b0b5f809d304e72d37f040 (patch) | |
tree | 052bd2138b9403f7b19f3d383b4593b5e80a35c9 | |
parent | 300db2a1e3eefc2a6ed379c870bc7da42a26e69a (diff) | |
parent | 099a426dd6a176e704f47ed665669bf093a6d3f6 (diff) | |
download | scala-d74da160b0583eed00b0b5f809d304e72d37f040.tar.gz scala-d74da160b0583eed00b0b5f809d304e72d37f040.tar.bz2 scala-d74da160b0583eed00b0b5f809d304e72d37f040.zip |
Merge pull request #3752 from jeroentervoorde/SI_8589
SI-8589 Performance improvement for ArrayCharSequence.toString
-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) + } } |