Repository: spark
Updated Branches:
  refs/heads/master 975643c25 -> e359794ce


[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 <cloud0...@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


Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/e359794c
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/e359794c
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/e359794c

Branch: refs/heads/master
Commit: e359794cec7d30ece38752f62dc2a1d3d26b8feb
Parents: 975643c
Author: Wenchen Fan <cloud0...@outlook.com>
Authored: Tue Mar 3 12:12:23 2015 +0000
Committer: Sean Owen <so...@cloudera.com>
Committed: Tue Mar 3 12:12:23 2015 +0000

----------------------------------------------------------------------
 .../spark/util/collection/PrimitiveVector.scala      | 15 ++++++++++++---
 .../spark/util/collection/SizeTrackingVector.scala   |  7 -------
 2 files changed, 12 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/spark/blob/e359794c/core/src/main/scala/org/apache/spark/util/collection/PrimitiveVector.scala
----------------------------------------------------------------------
diff --git 
a/core/src/main/scala/org/apache/spark/util/collection/PrimitiveVector.scala 
b/core/src/main/scala/org/apache/spark/util/collection/PrimitiveVector.scala
index 7e76d06..b6c380a 100644
--- a/core/src/main/scala/org/apache/spark/util/collection/PrimitiveVector.scala
+++ b/core/src/main/scala/org/apache/spark/util/collection/PrimitiveVector.scala
@@ -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
+  }
 }

http://git-wip-us.apache.org/repos/asf/spark/blob/e359794c/core/src/main/scala/org/apache/spark/util/collection/SizeTrackingVector.scala
----------------------------------------------------------------------
diff --git 
a/core/src/main/scala/org/apache/spark/util/collection/SizeTrackingVector.scala 
b/core/src/main/scala/org/apache/spark/util/collection/SizeTrackingVector.scala
index 65a7b4e..dfcfb66 100644
--- 
a/core/src/main/scala/org/apache/spark/util/collection/SizeTrackingVector.scala
+++ 
b/core/src/main/scala/org/apache/spark/util/collection/SizeTrackingVector.scala
@@ -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
-  }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org
For additional commands, e-mail: commits-h...@spark.apache.org

Reply via email to