From 4215f6bd7d6895e400062c22d80a7ccfab20ff23 Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Mon, 11 Oct 2010 23:18:19 +0000 Subject: Introduced -Ymurmur with murmur hashcodes. contributed by "archontophoenix", following in the grand tradition of code by people whose actual names I don't know. References #2537, but it doesn't close until some sensible hashcode is used by default. Review by community. --- test/files/run/hashCodeDistribution.flags | 1 + test/files/run/hashCodeDistribution.scala | 17 +++++++++++++++++ test/pending/run/hashCodeDistribution.flags | 1 - test/pending/run/hashCodeDistribution.scala | 17 ----------------- 4 files changed, 18 insertions(+), 18 deletions(-) create mode 100644 test/files/run/hashCodeDistribution.flags create mode 100644 test/files/run/hashCodeDistribution.scala delete mode 100644 test/pending/run/hashCodeDistribution.flags delete mode 100644 test/pending/run/hashCodeDistribution.scala (limited to 'test') diff --git a/test/files/run/hashCodeDistribution.flags b/test/files/run/hashCodeDistribution.flags new file mode 100644 index 0000000000..5f7bd1a5be --- /dev/null +++ b/test/files/run/hashCodeDistribution.flags @@ -0,0 +1 @@ +-Ymurmur \ No newline at end of file diff --git a/test/files/run/hashCodeDistribution.scala b/test/files/run/hashCodeDistribution.scala new file mode 100644 index 0000000000..5be9d1db6d --- /dev/null +++ b/test/files/run/hashCodeDistribution.scala @@ -0,0 +1,17 @@ +// See ticket #2537. +object Test { + case class C(x: Int, y: Int) { } + val COUNT = 300 + val totalCodes = COUNT * COUNT + + def main (args: Array[String]) = { + val hashCodes = + for (x <- 0 until COUNT; y <- 0 until COUNT) yield C(x,y).hashCode + + val uniques = hashCodes.distinct + val collisionRate = (totalCodes - uniques.size) * 1000 / totalCodes + + assert(collisionRate < 5, "Collision rate too high: %d / 1000".format(collisionRate)) + // println("collisionRate = %d / 1000".format(collisionRate)) + } +} \ No newline at end of file diff --git a/test/pending/run/hashCodeDistribution.flags b/test/pending/run/hashCodeDistribution.flags deleted file mode 100644 index 7806652d4d..0000000000 --- a/test/pending/run/hashCodeDistribution.flags +++ /dev/null @@ -1 +0,0 @@ --Yjenkins-hashCodes \ No newline at end of file diff --git a/test/pending/run/hashCodeDistribution.scala b/test/pending/run/hashCodeDistribution.scala deleted file mode 100644 index 5be9d1db6d..0000000000 --- a/test/pending/run/hashCodeDistribution.scala +++ /dev/null @@ -1,17 +0,0 @@ -// See ticket #2537. -object Test { - case class C(x: Int, y: Int) { } - val COUNT = 300 - val totalCodes = COUNT * COUNT - - def main (args: Array[String]) = { - val hashCodes = - for (x <- 0 until COUNT; y <- 0 until COUNT) yield C(x,y).hashCode - - val uniques = hashCodes.distinct - val collisionRate = (totalCodes - uniques.size) * 1000 / totalCodes - - assert(collisionRate < 5, "Collision rate too high: %d / 1000".format(collisionRate)) - // println("collisionRate = %d / 1000".format(collisionRate)) - } -} \ No newline at end of file -- cgit v1.2.3