From bc5eb3e511489e5e24fcc016a907ac7f32ca6184 Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Fri, 27 Nov 2009 13:28:45 +0000 Subject: Performance improvement on Ordering. --- src/library/scala/math/Ordering.scala | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/library') diff --git a/src/library/scala/math/Ordering.scala b/src/library/scala/math/Ordering.scala index 3eeebc8aea..2596770d2e 100644 --- a/src/library/scala/math/Ordering.scala +++ b/src/library/scala/math/Ordering.scala @@ -126,6 +126,11 @@ object Ordering extends LowPriorityOrderingImplicits { def fromLessThan[T](cmp: (T, T) => Boolean): Ordering[T] = new Ordering[T] { def compare(x: T, y: T) = if (cmp(x, y)) -1 else if (cmp(y, x)) 1 else 0 + // overrides to avoid multiple comparisons + override def lt(x: T, y: T): Boolean = cmp(x, y) + override def gt(x: T, y: T): Boolean = cmp(y, x) + override def gteq(x: T, y: T): Boolean = !cmp(x, y) + override def lteq(x: T, y: T): Boolean = !cmp(y, x) } trait UnitOrdering extends Ordering[Unit] { -- cgit v1.2.3