diff options
author | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2010-11-11 14:38:32 +0000 |
---|---|---|
committer | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2010-11-11 14:38:32 +0000 |
commit | 46a921df8152d2535cca577132a2fe323a57ca88 (patch) | |
tree | 69be5cea893d263ac40fa9b430606f322b544f32 | |
parent | a1fd391c10e9b71ca2850cdcde3c76f6ec9d6c78 (diff) | |
download | scala-46a921df8152d2535cca577132a2fe323a57ca88.tar.gz scala-46a921df8152d2535cca577132a2fe323a57ca88.tar.bz2 scala-46a921df8152d2535cca577132a2fe323a57ca88.zip |
A slight performance improvement for parallel s...
A slight performance improvement for parallel sets. No review.
-rw-r--r-- | src/library/scala/collection/parallel/mutable/ParHashSet.scala | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/src/library/scala/collection/parallel/mutable/ParHashSet.scala b/src/library/scala/collection/parallel/mutable/ParHashSet.scala index 9c505f6920..ef173a23ab 100644 --- a/src/library/scala/collection/parallel/mutable/ParHashSet.scala +++ b/src/library/scala/collection/parallel/mutable/ParHashSet.scala @@ -184,8 +184,8 @@ self: EnvironmentPassingCombiner[T, ParHashSet[T]] => } table(h) = elem.asInstanceOf[AnyRef] - // this is incorrect since we set size afterwards anyway and such a - // counter would not work anyway: + // this is incorrect since we set size afterwards anyway and a counter + // like this would not even work: // // tableSize = tableSize + 1 // @@ -233,31 +233,31 @@ self: EnvironmentPassingCombiner[T, ParHashSet[T]] => var leftovers = new UnrolledBuffer[Any] var inserted = 0 - // var unrolled = elems.headPtr - // var i = 0 - // var t = table - // while (unrolled ne null) { - // val chunkarr = unrolled.array - // val chunksz = unrolled.size - // while (i < chunksz) { - // val elem = chunkarr(i) - // val res = t.insertEntry(atPos, beforePos, elem.asInstanceOf[T]) - // if (res >= 0) inserted += 1 - // else leftovers += elem - // i += 1 - // } - // i = 0 - // unrolled = unrolled.next - // } + var unrolled = elems.headPtr + var i = 0 + var t = table + while (unrolled ne null) { + val chunkarr = unrolled.array + val chunksz = unrolled.size + while (i < chunksz) { + val elem = chunkarr(i) + val res = t.insertEntry(atPos, beforePos, elem.asInstanceOf[T]) + if (res >= 0) inserted += res + else leftovers += elem + i += 1 + } + i = 0 + unrolled = unrolled.next + } // slower: - var it = elems.iterator - while (it.hasNext) { - val elem = it.next - val res = table.insertEntry(atPos, beforePos, elem.asInstanceOf[T]) - if (res >= 0) inserted += res - else leftovers += elem - } + // var it = elems.iterator + // while (it.hasNext) { + // val elem = it.next + // val res = table.insertEntry(atPos, beforePos, elem.asInstanceOf[T]) + // if (res >= 0) inserted += res + // else leftovers += elem + // } (inserted, leftovers) } |