summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/library/scala/collection/parallel/ParIterableLike.scala6
-rw-r--r--src/library/scala/collection/parallel/immutable/ParHashTrie.scala2
-rw-r--r--src/library/scala/collection/parallel/mutable/ParArray.scala11
-rw-r--r--test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ScanLight.scala2
4 files changed, 5 insertions, 16 deletions
diff --git a/src/library/scala/collection/parallel/ParIterableLike.scala b/src/library/scala/collection/parallel/ParIterableLike.scala
index ff37c89517..c6130aeb12 100644
--- a/src/library/scala/collection/parallel/ParIterableLike.scala
+++ b/src/library/scala/collection/parallel/ParIterableLike.scala
@@ -946,9 +946,9 @@ extends IterableLike[T, Repr]
// and keep processors busier with merging
// (work stealing while prefix scanning means more work later)
val processors = parallelismLevel min availableProcessors
- len > ((size / tweak(processors)) max 1)
+ len > (((size + 1) / tweak(processors)) max 1)
}
- private def tweak(p: Int) = if (p < 4) 2 else p / 2
+ private def tweak(p: Int) = 2 // if (p < 4) p else p / 2
override def split = {
val pits = pit.split
for ((p, untilp) <- pits zip pits.scanLeft(0)(_ + _.remaining); if untilp < len) yield {
@@ -973,7 +973,7 @@ extends IterableLike[T, Repr]
i += 1
}
}
- def shouldSplitFurther = len > threshold(size, parallelismLevel)
+ def shouldSplitFurther = len > (parallelismLevel min availableProcessors) // threshold(size, parallelismLevel)
def split = {
val fp = len / 2
val sp = len - fp
diff --git a/src/library/scala/collection/parallel/immutable/ParHashTrie.scala b/src/library/scala/collection/parallel/immutable/ParHashTrie.scala
index bb157b13dd..cb835c7fcd 100644
--- a/src/library/scala/collection/parallel/immutable/ParHashTrie.scala
+++ b/src/library/scala/collection/parallel/immutable/ParHashTrie.scala
@@ -189,7 +189,7 @@ self: EnvironmentPassingCombiner[(K, V), ParHashTrie[K, V]] =>
while (i < chunksz) {
val kv = chunkarr(i)
val hc = kv._1.##
- trie = trie.updated0(kv._1, hc, rootbits, kv._2, kv)
+ trie = trie.updated0(kv._1, hc, rootbits, kv._2, kv, null)
i += 1
}
i = 0
diff --git a/src/library/scala/collection/parallel/mutable/ParArray.scala b/src/library/scala/collection/parallel/mutable/ParArray.scala
index da99db860b..0d0b045912 100644
--- a/src/library/scala/collection/parallel/mutable/ParArray.scala
+++ b/src/library/scala/collection/parallel/mutable/ParArray.scala
@@ -511,17 +511,6 @@ extends ParSeq[T]
}
override def scanToArray[U >: T, A >: U](z: U, op: (U, U) => U, destarr: Array[A], from: Int) {
- // var last = z
- // var j = from
- // var k = i
- // val ntil = until
- // val a = arr
- // while (k < ntil) {
- // last = op(last, a(k).asInstanceOf[U])
- // destarr(j) = last
- // k += 1
- // }
- // i = k
scanToArray_quick[U](array, destarr.asInstanceOf[Array[Any]], op, z, i, until, from)
i = until
}
diff --git a/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ScanLight.scala b/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ScanLight.scala
index ad2b534fd7..b18b98a208 100644
--- a/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ScanLight.scala
+++ b/test/benchmarks/src/scala/collection/parallel/benchmarks/parallel_array/ScanLight.scala
@@ -13,7 +13,7 @@ object ScanLight extends Companion {
val op = (a: Cont, b: Cont) => {
val m = if (a.in < 0) 1 else 0
- new Cont(a.in + b.in + m * (0 until 100).reduceLeft(_ + _))
+ new Cont(a.in + b.in + m * (0 until 10).reduceLeft(_ + _))
}
}