 <blockquote> <p>This is really surprising to me, is there any internal memory copy that slow down the processing?</p> </blockquote> <p><code>ArrayOps.drop</code> internally calls <code>IterableLike.slice</code>, which allocates a builder that produces a new <code>Array</code> for each call:</p> <pre><code>override def slice(from: Int, until: Int): Repr = { val lo = math.max(from, 0) val hi = math.min(math.max(until, 0), length) val elems = math.max(hi - lo, 0) val b = newBuilder b.sizeHint(elems) var i = lo while (i &lt; hi) { b += self(i) i += 1 } b.result() } </code></pre> <p>You're seeing the cost of the iteration + allocation. You didn't specify how many times this happens and what's the size of the collection, but if it's large this could be time consuming.</p> <p>One way of optimizing this is to generate a <code>List[String]</code> instead which simply iterates the collection and drops it's <code>head</code> element. Note this will occur an additional traversal of the <code>Array[T]</code> to create the list, so make sure to benchmark this to see you actually gain anything:</p> <pre><code>val items = s.split(" +").toList val afterDrop = items.drop(2).mkString(" ") </code></pre> <p>Another possibility is to enrich <code>Array[T]</code> to include your own version of <code>mkString</code> which manually populates a <code>StringBuilder</code>:</p> <pre><code>object RichOps { implicit class RichArray[T](val arr: Array[T]) extends AnyVal { def mkStringWithIndex(start: Int, end: Int, separator: String): String = { var idx = start val stringBuilder = new StringBuilder(end - start) while (idx &lt; end) { stringBuilder.append(arr(idx)) if (idx != end - 1) { stringBuilder.append(separator) } idx += 1 } stringBuilder.toString() } } } </code></pre> <p>And now we have:</p> <pre><code>object Test { def main(args: Array[String]): Unit = { import RichOps._ val items = "hello everyone and welcome".split(" ") println(items.mkStringWithIndex(2, items.length, " ")) } </code></pre> <p>Yields:</p> <pre><code>and welcome </code></pre>