summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorJosh Suereth <Joshua.Suereth@gmail.com>2012-06-18 12:29:24 -0700
committerJosh Suereth <Joshua.Suereth@gmail.com>2012-06-18 12:29:24 -0700
commit7ee46cc766539c9e8c287c29170657c55b3e158e (patch)
treef2326f444463f0c344f96e061e6fea084e4fa2f3 /src/library
parentbf4b982389dcd573e81155bfe233f70f1471b017 (diff)
parent6f5979f00118e19b1e3e143d366f2d6029a63466 (diff)
downloadscala-7ee46cc766539c9e8c287c29170657c55b3e158e.tar.gz
scala-7ee46cc766539c9e8c287c29170657c55b3e158e.tar.bz2
scala-7ee46cc766539c9e8c287c29170657c55b3e158e.zip
Merge pull request #742 from axel22/feature/pc-ctrie
Use `ThreadLocalRandom` in `TrieMap.size`.
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/collection/concurrent/TrieMap.scala6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/library/scala/collection/concurrent/TrieMap.scala b/src/library/scala/collection/concurrent/TrieMap.scala
index 08e9125bd8..2d8217551a 100644
--- a/src/library/scala/collection/concurrent/TrieMap.scala
+++ b/src/library/scala/collection/concurrent/TrieMap.scala
@@ -473,7 +473,11 @@ extends CNodeBase[K, V] {
private def computeSize(ct: TrieMap[K, V]): Int = {
var i = 0
var sz = 0
- val offset = math.abs(util.Random.nextInt()) % array.length
+ val offset =
+ if (array.length > 0)
+ //util.Random.nextInt(array.length) /* <-- benchmarks show that this causes observable contention */
+ scala.concurrent.forkjoin.ThreadLocalRandom.current.nextInt(0, array.length)
+ else 0
while (i < array.length) {
val pos = (i + offset) % array.length
array(pos) match {