Author: jbellis
Date: Thu Feb 24 15:08:31 2011
New Revision: 1074182
URL: http://svn.apache.org/viewvc?rev=1074182&view=rev
Log:
cache IndexInfo comparators in AbstractType objects
patch by slebresne; reviewed by jbellis for CASSANDRA-2239
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/marshal/AbstractType.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/IndexHelper.java
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/marshal/AbstractType.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/marshal/AbstractType.java?rev=1074182&r1=1074181&r2=1074182&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/marshal/AbstractType.java
(original)
+++
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/marshal/AbstractType.java
Thu Feb 24 15:08:31 2011
@@ -26,6 +26,7 @@ import java.util.Collection;
import java.util.Comparator;
import org.apache.cassandra.db.IColumn;
+import static org.apache.cassandra.io.sstable.IndexHelper.IndexInfo;
/**
* Specifies a Comparator for a specific type of ByteBuffer.
@@ -37,6 +38,28 @@ import org.apache.cassandra.db.IColumn;
*/
public abstract class AbstractType implements Comparator<ByteBuffer>
{
+ public final Comparator<IndexInfo> indexComparator;
+ public final Comparator<IndexInfo> indexReverseComparator;
+
+ protected AbstractType()
+ {
+ final AbstractType that = this;
+ indexComparator = new Comparator<IndexInfo>()
+ {
+ public int compare(IndexInfo o1, IndexInfo o2)
+ {
+ return that.compare(o1.lastName, o2.lastName);
+ }
+ };
+ indexReverseComparator = new Comparator<IndexInfo>()
+ {
+ public int compare(IndexInfo o1, IndexInfo o2)
+ {
+ return that.compare(o1.firstName, o2.firstName);
+ }
+ };
+ }
+
/** get a string representation of the bytes suitable for log messages */
public abstract String getString(ByteBuffer bytes);
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/IndexHelper.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/IndexHelper.java?rev=1074182&r1=1074181&r2=1074182&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/IndexHelper.java
(original)
+++
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/io/sstable/IndexHelper.java
Thu Feb 24 15:08:31 2011
@@ -151,21 +151,7 @@ public class IndexHelper
public static Comparator<IndexInfo> getComparator(final AbstractType
nameComparator, boolean reversed)
{
- return reversed
- ? new Comparator<IndexInfo>()
- {
- public int compare(IndexInfo o1, IndexInfo o2)
- {
- return nameComparator.compare(o1.firstName,
o2.firstName);
- }
- }
- : new Comparator<IndexInfo>()
- {
- public int compare(IndexInfo o1, IndexInfo o2)
- {
- return nameComparator.compare(o1.lastName,
o2.lastName);
- }
- };
+ return reversed ? nameComparator.indexReverseComparator :
nameComparator.indexComparator;
}
public static class IndexInfo