Skip to content
Snippets Groups Projects
Commit e359794c authored by Wenchen Fan's avatar Wenchen Fan Committed by Sean Owen
Browse files

[SPARK-6138][CORE][minor] enhance the `toArray` method in `SizeTrackingVector`

Use array copy instead of `Iterator#toArray` to make it more efficient.

Author: Wenchen Fan <cloud0fan@outlook.com>

Closes #4825 from cloud-fan/minor and squashes the following commits:

c933ee5 [Wenchen Fan] make toArray method just in parent
946a35b [Wenchen Fan] minor enhance
parent 975643c2
No related branches found
No related tags found
No related merge requests found
......@@ -71,12 +71,21 @@ class PrimitiveVector[@specialized(Long, Int, Double) V: ClassTag](initialSize:
/** Resizes the array, dropping elements if the total length decreases. */
def resize(newLength: Int): PrimitiveVector[V] = {
val newArray = new Array[V](newLength)
_array.copyToArray(newArray)
_array = newArray
_array = copyArrayWithLength(newLength)
if (newLength < _numElements) {
_numElements = newLength
}
this
}
/** Return a trimmed version of the underlying array. */
def toArray: Array[V] = {
copyArrayWithLength(size)
}
private def copyArrayWithLength(length: Int): Array[V] = {
val copy = new Array[V](length)
_array.copyToArray(copy)
copy
}
}
......@@ -36,11 +36,4 @@ private[spark] class SizeTrackingVector[T: ClassTag]
resetSamples()
this
}
/**
* Return a trimmed version of the underlying array.
*/
def toArray: Array[T] = {
super.iterator.toArray
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment