@@ -575,7 +575,14 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self =>
575
575
def apply (i : Int ): Float = unsafeArray(i)
576
576
override def hashCode = MurmurHash3 .arraySeqHash(unsafeArray)
577
577
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
+ }
579
586
case _ => super .equals(that)
580
587
}
581
588
override def iterator : Iterator [Float ] = new ArrayOps .ArrayIterator [Float ](unsafeArray)
@@ -610,7 +617,14 @@ object ArraySeq extends StrictOptimizedClassTagSeqFactory[ArraySeq] { self =>
610
617
def apply (i : Int ): Double = unsafeArray(i)
611
618
override def hashCode = MurmurHash3 .arraySeqHash(unsafeArray)
612
619
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
+ }
614
628
case _ => super .equals(that)
615
629
}
616
630
override def iterator : Iterator [Double ] = new ArrayOps .ArrayIterator [Double ](unsafeArray)
0 commit comments