summaryrefslogtreecommitdiff
path: root/test/files/run
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2010-10-11 23:18:19 +0000
committerPaul Phillips <paulp@improving.org>2010-10-11 23:18:19 +0000
commit4215f6bd7d6895e400062c22d80a7ccfab20ff23 (patch)
tree236d0513c1f5917ee7eab67df7242c3ea9f2d203 /test/files/run
parente5c22d9e0a11f0c1a0d29520f7420d709fb174ec (diff)
downloadscala-4215f6bd7d6895e400062c22d80a7ccfab20ff23.tar.gz
scala-4215f6bd7d6895e400062c22d80a7ccfab20ff23.tar.bz2
scala-4215f6bd7d6895e400062c22d80a7ccfab20ff23.zip
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.
Diffstat (limited to 'test/files/run')
-rw-r--r--test/files/run/hashCodeDistribution.flags1
-rw-r--r--test/files/run/hashCodeDistribution.scala17
2 files changed, 18 insertions, 0 deletions
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