Repository: hbase
Updated Branches:
  refs/heads/0.98 7a7bb1371 -> 4ab989c81
  refs/heads/branch-1 1fbab729a -> 8ff5f2548
  refs/heads/master 5d4bc3ea1 -> bcee3609d


HBASE-12077 FilterLists create many ArrayList objects per row (Lars Hofhansl)


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

Branch: refs/heads/master
Commit: bcee3609dd512d7194fe05aac0efd687fcb3cf4c
Parents: 5d4bc3e
Author: Andrew Purtell <[email protected]>
Authored: Wed Sep 24 11:12:21 2014 -0700
Committer: Andrew Purtell <[email protected]>
Committed: Wed Sep 24 11:12:21 2014 -0700

----------------------------------------------------------------------
 .../apache/hadoop/hbase/filter/FilterList.java  | 61 +++++++++++++-------
 1 file changed, 39 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/bcee3609/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/FilterList.java
----------------------------------------------------------------------
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/FilterList.java 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/FilterList.java
index a9096d6..d98ca8b 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/FilterList.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/filter/FilterList.java
@@ -169,8 +169,9 @@ final public class FilterList extends Filter {
 
   @Override
   public void reset() throws IOException {
-    for (Filter filter : filters) {
-      filter.reset();
+    int listize = filters.size();
+    for (int i = 0; i < listize; i++) {
+      filters.get(i).reset();
     }
     seekHintFilter = null;
   }
@@ -178,7 +179,9 @@ final public class FilterList extends Filter {
   @Override
   public boolean filterRowKey(byte[] rowKey, int offset, int length) throws 
IOException {
     boolean flag = (this.operator == Operator.MUST_PASS_ONE) ? true : false;
-    for (Filter filter : filters) {
+    int listize = filters.size();
+    for (int i = 0; i < listize; i++) {
+      Filter filter = filters.get(i);
       if (this.operator == Operator.MUST_PASS_ALL) {
         if (filter.filterAllRemaining() ||
             filter.filterRowKey(rowKey, offset, length)) {
@@ -196,8 +199,9 @@ final public class FilterList extends Filter {
 
   @Override
   public boolean filterAllRemaining() throws IOException {
-    for (Filter filter : filters) {
-      if (filter.filterAllRemaining()) {
+    int listize = filters.size();
+    for (int i = 0; i < listize; i++) {
+      if (filters.get(i).filterAllRemaining()) {
         if (operator == Operator.MUST_PASS_ALL) {
           return true;
         }
@@ -230,7 +234,9 @@ final public class FilterList extends Filter {
 
     ReturnCode rc = operator == Operator.MUST_PASS_ONE?
         ReturnCode.SKIP: ReturnCode.INCLUDE;
-    for (Filter filter : filters) {
+    int listize = filters.size();
+    for (int i = 0; i < listize; i++) {
+      Filter filter = filters.get(i);
       if (operator == Operator.MUST_PASS_ALL) {
         if (filter.filterAllRemaining()) {
           return ReturnCode.NEXT_ROW;
@@ -294,16 +300,18 @@ final public class FilterList extends Filter {
    */
   @Override
   public void filterRowCells(List<Cell> cells) throws IOException {
-    for (Filter filter : filters) {
-      filter.filterRowCells(cells); 
+    int listize = filters.size();
+    for (int i = 0; i < listize; i++) {
+      filters.get(i).filterRowCells(cells);
     }
   }
 
   @Override
   public boolean hasFilterRow() {
-    for (Filter filter : filters) {
-      if(filter.hasFilterRow()) {
-       return true;
+    int listize = filters.size();
+    for (int i = 0; i < listize; i++) {
+      if (filters.get(i).hasFilterRow()) {
+        return true;
       }
     }
     return false;
@@ -311,7 +319,9 @@ final public class FilterList extends Filter {
 
   @Override
   public boolean filterRow() throws IOException {
-    for (Filter filter : filters) {
+    int listize = filters.size();
+    for (int i = 0; i < listize; i++) {
+      Filter filter = filters.get(i);
       if (operator == Operator.MUST_PASS_ALL) {
         if (filter.filterRow()) {
           return true;
@@ -332,8 +342,9 @@ final public class FilterList extends Filter {
     FilterProtos.FilterList.Builder builder =
       FilterProtos.FilterList.newBuilder();
     
builder.setOperator(FilterProtos.FilterList.Operator.valueOf(operator.name()));
-    for (Filter filter : filters) {
-      builder.addFilters(ProtobufUtil.toFilter(filter));
+    int listize = filters.size();
+    for (int i = 0; i < listize; i++) {
+      builder.addFilters(ProtobufUtil.toFilter(filters.get(i)));
     }
     return builder.build().toByteArray();
   }
@@ -355,8 +366,11 @@ final public class FilterList extends Filter {
 
     List<Filter> rowFilters = new ArrayList<Filter>(proto.getFiltersCount());
     try {
-      for (FilterProtos.Filter filter : proto.getFiltersList()) {
-        rowFilters.add(ProtobufUtil.toFilter(filter));
+      List<org.apache.hadoop.hbase.protobuf.generated.FilterProtos.Filter> 
filtersList =
+          proto.getFiltersList();
+      int listSize = filtersList.size();
+      for (int i = 0; i < listSize; i++) {
+        rowFilters.add(ProtobufUtil.toFilter(filtersList.get(i)));
       }
     } catch (IOException ioe) {
       throw new DeserializationException(ioe);
@@ -388,8 +402,9 @@ final public class FilterList extends Filter {
     }
 
     // If any condition can pass, we need to keep the min hint
-    for (Filter filter : filters) {
-      Cell curKeyHint = filter.getNextCellHint(currentCell);
+    int listize = filters.size();
+    for (int i = 0; i < listize; i++) {
+      Cell curKeyHint = filters.get(i).getNextCellHint(currentCell);
       if (curKeyHint == null) {
         // If we ever don't have a hint and this is must-pass-one, then no hint
         return null;
@@ -410,8 +425,9 @@ final public class FilterList extends Filter {
 
   @Override
   public boolean isFamilyEssential(byte[] name) throws IOException {
-    for (Filter filter : filters) {
-      if (filter.isFamilyEssential(name)) {
+    int listize = filters.size();
+    for (int i = 0; i < listize; i++) {
+      if (filters.get(i).isFamilyEssential(name)) {
         return true;
       }
     }
@@ -420,8 +436,9 @@ final public class FilterList extends Filter {
 
   @Override
   public void setReversed(boolean reversed) {
-    for (Filter filter : filters) {
-      filter.setReversed(reversed);
+    int listize = filters.size();
+    for (int i = 0; i < listize; i++) {
+      filters.get(i).setReversed(reversed);
     }
     this.reversed = reversed;
   }

Reply via email to