summaryrefslogtreecommitdiff
path: root/src/build
diff options
context:
space:
mode:
authorDima Tkach <dima@lookout.com>2016-06-28 07:26:45 -0400
committerDima Tkach <dima@lookout.com>2016-06-28 10:03:09 -0400
commitadd83b8a8fea641c3ba96ed963c25c84ffe137fb (patch)
tree3004ef23a3f9ed1f5e1efb2c4a429945514816f8 /src/build
parent4e950838cbee187f3cee2ef197164792db74e56a (diff)
downloadscala-add83b8a8fea641c3ba96ed963c25c84ffe137fb.tar.gz
scala-add83b8a8fea641c3ba96ed963c25c84ffe137fb.tar.bz2
scala-add83b8a8fea641c3ba96ed963c25c84ffe137fb.zip
Override `.slice` in ArrayOps to use arraycopy.
This makes it ~10x faster when copying large chunks arround. My benchmark: def bm(duration: Long)(f: => Unit): Int = { val end = System.currentTimeMillis + duration var count = 0 while(System.currentTimeMillis < end) { f count += 1 } count } def measure(seconds: Int)(f: => Unit) = (1 to seconds).map { _ => bm(1000)(f) }.sum / seconds val array = scala.util.Random.alphanumeric.take(1000).toArray measure(20) { array.slice(100, 500) } // ~5 million measure(20) { scala.collection.WrappedArray(array).slice(100, 500) } // ~300K
Diffstat (limited to 'src/build')
0 files changed, 0 insertions, 0 deletions