@@ -575,7 +575,14 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self =>
575575 def apply (i : Int ): Float = unsafeArray(i)
576576 override def hashCode = MurmurHash3 .arraySeqHash(unsafeArray)
577577 override def equals (that : Any ) = that match {
578- case that : ofFloat => Arrays .equals(unsafeArray, that.unsafeArray)
578+ case that : ofFloat =>
579+ val array = unsafeArray
580+ val thatArray = that.unsafeArray
581+ (array eq thatArray) || array.length == thatArray.length && {
582+ var i = 0
583+ while (i < array.length && array(i) == thatArray(i)) i += 1
584+ i >= array.length
585+ }
579586 case _ => super .equals(that)
580587 }
581588 override def iterator : Iterator [Float ] = new ArrayOps .ArrayIterator [Float ](unsafeArray)
@@ -610,7 +617,14 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self =>
610617 def apply (i : Int ): Double = unsafeArray(i)
611618 override def hashCode = MurmurHash3 .arraySeqHash(unsafeArray)
612619 override def equals (that : Any ) = that match {
613- case that : ofDouble => Arrays .equals(unsafeArray, that.unsafeArray)
620+ case that : ofDouble =>
621+ val array = unsafeArray
622+ val thatArray = that.unsafeArray
623+ (array eq thatArray) || array.length == thatArray.length && {
624+ var i = 0
625+ while (i < array.length && array(i) == thatArray(i)) i += 1
626+ i >= array.length
627+ }
614628 case _ => super .equals(that)
615629 }
616630 override def iterator : Iterator [Double ] = new ArrayOps .ArrayIterator [Double ](unsafeArray)
0 commit comments