You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2016/09/13 16:55:19 UTC

hbase git commit: HBASE-16612 Use array to cache Types for KeyValue.Type.codeToType (Phil Yang)

Repository: hbase
Updated Branches:
  refs/heads/master a602aaf9b -> 981200bf1


HBASE-16612 Use array to cache Types for KeyValue.Type.codeToType (Phil Yang)


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

Branch: refs/heads/master
Commit: 981200bf1344e2c58559874cb7a66132f703efd6
Parents: a602aaf
Author: tedyu <yu...@gmail.com>
Authored: Tue Sep 13 09:54:27 2016 -0700
Committer: tedyu <yu...@gmail.com>
Committed: Tue Sep 13 09:54:27 2016 -0700

----------------------------------------------------------------------
 .../main/java/org/apache/hadoop/hbase/KeyValue.java  | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/981200bf/hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java
----------------------------------------------------------------------
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java
index c1734cc..0c33a96 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java
@@ -252,6 +252,14 @@ public class KeyValue implements Cell, HeapSize, Cloneable, SettableSequenceId,
       return this.code;
     }
 
+    private static Type[] codeArray = new Type[256];
+
+    static {
+      for (Type t : Type.values()) {
+        codeArray[t.code & 0xff] = t;
+      }
+    }
+
     /**
      * Cannot rely on enum ordinals . They change if item is removed or moved.
      * Do our own codes.
@@ -259,10 +267,9 @@ public class KeyValue implements Cell, HeapSize, Cloneable, SettableSequenceId,
      * @return Type associated with passed code.
      */
     public static Type codeToType(final byte b) {
-      for (Type t : Type.values()) {
-        if (t.getCode() == b) {
-          return t;
-        }
+      Type t = codeArray[b & 0xff];
+      if (t != null) {
+        return t;
       }
       throw new RuntimeException("Unknown code " + b);
     }