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()) {