Author: srowen
Date: Wed Apr 25 16:48:07 2012
New Revision: 1330414

URL: http://svn.apache.org/viewvc?rev=1330414&view=rev
Log:
MAHOUT-1001 optimization of vector allocation

Modified:
    
mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/cooccurrence/RowSimilarityJob.java

Modified: 
mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/cooccurrence/RowSimilarityJob.java
URL: 
http://svn.apache.org/viewvc/mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/cooccurrence/RowSimilarityJob.java?rev=1330414&r1=1330413&r2=1330414&view=diff
==============================================================================
--- 
mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/cooccurrence/RowSimilarityJob.java
 (original)
+++ 
mahout/trunk/core/src/main/java/org/apache/mahout/math/hadoop/similarity/cooccurrence/RowSimilarityJob.java
 Wed Apr 25 16:48:07 2012
@@ -387,14 +387,16 @@ public class RowSimilarityJob extends Ab
     protected void map(IntWritable row, VectorWritable similaritiesWritable, 
Context ctx)
         throws IOException, InterruptedException {
       Vector similarities = similaritiesWritable.get();
+      // For performance reasons moved transposedPartial creation out of the 
while loop and reusing the same vector
+      Vector transposedPartial = similarities.like();
       TopK<Vector.Element> topKQueue = new 
TopK<Vector.Element>(maxSimilaritiesPerRow, Vectors.BY_VALUE);
       Iterator<Vector.Element> nonZeroElements = similarities.iterateNonZero();
       while (nonZeroElements.hasNext()) {
         Vector.Element nonZeroElement = nonZeroElements.next();
         topKQueue.offer(new Vectors.TemporaryElement(nonZeroElement));
-        Vector transposedPartial = similarities.like();
         transposedPartial.setQuick(row.get(), nonZeroElement.get());
         ctx.write(new IntWritable(nonZeroElement.index()), new 
VectorWritable(transposedPartial));
+        transposedPartial.setQuick(row.get(), 0.0);
       }
       Vector topKSimilarities = similarities.like();
       for (Vector.Element topKSimilarity : topKQueue.retrieve()) {


Reply via email to