Author: sershe
Date: Mon Aug 18 17:32:15 2014
New Revision: 1618671

URL: http://svn.apache.org/r1618671
Log:
HIVE-7705 : there's a useless threadlocal in LBUtils that shows up in perf 
profiles (Sergey Shelukhin, Navis reviewed by Gopal V, Navis)

Modified:
    
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryArray.java
    
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryMap.java
    
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryStruct.java
    
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryUtils.java

Modified: 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryArray.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryArray.java?rev=1618671&r1=1618670&r2=1618671&view=diff
==============================================================================
--- 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryArray.java
 (original)
+++ 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryArray.java
 Mon Aug 18 17:32:15 2014
@@ -149,7 +149,7 @@ public class LazyBinaryArray extends
       if ((bytes[nullByteCur] & (1 << (i % 8))) != 0) {
         elementIsNull[i] = false;
         LazyBinaryUtils.checkObjectByteInfo(listEleObjectInspector, bytes,
-            lastElementByteEnd, recordInfo);
+            lastElementByteEnd, recordInfo, vInt);
         elementStart[i] = lastElementByteEnd + recordInfo.elementOffset;
         elementLength[i] = recordInfo.elementSize;
         lastElementByteEnd = elementStart[i] + elementLength[i];

Modified: 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryMap.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryMap.java?rev=1618671&r1=1618670&r2=1618671&view=diff
==============================================================================
--- 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryMap.java
 (original)
+++ 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryMap.java
 Mon Aug 18 17:32:15 2014
@@ -163,7 +163,7 @@ public class LazyBinaryMap extends
       if ((bytes[nullByteCur] & (1 << ((i * 2) % 8))) != 0) {
         keyIsNull[i] = false;
         LazyBinaryUtils.checkObjectByteInfo(((MapObjectInspector) oi)
-            .getMapKeyObjectInspector(), bytes, lastElementByteEnd, 
recordInfo);
+            .getMapKeyObjectInspector(), bytes, lastElementByteEnd, 
recordInfo, vInt);
         keyStart[i] = lastElementByteEnd + recordInfo.elementOffset;
         keyLength[i] = recordInfo.elementSize;
         lastElementByteEnd = keyStart[i] + keyLength[i];
@@ -178,7 +178,7 @@ public class LazyBinaryMap extends
         valueIsNull[i] = false;
         LazyBinaryUtils.checkObjectByteInfo(((MapObjectInspector) oi)
             .getMapValueObjectInspector(), bytes, lastElementByteEnd,
-            recordInfo);
+            recordInfo, vInt);
         valueStart[i] = lastElementByteEnd + recordInfo.elementOffset;
         valueLength[i] = recordInfo.elementSize;
         lastElementByteEnd = valueStart[i] + valueLength[i];

Modified: 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryStruct.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryStruct.java?rev=1618671&r1=1618670&r2=1618671&view=diff
==============================================================================
--- 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryStruct.java
 (original)
+++ 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryStruct.java
 Mon Aug 18 17:32:15 2014
@@ -27,6 +27,7 @@ import org.apache.hadoop.hive.serde2.Ser
 import org.apache.hadoop.hive.serde2.StructObject;
 import org.apache.hadoop.hive.serde2.lazy.ByteArrayRef;
 import org.apache.hadoop.hive.serde2.lazybinary.LazyBinaryUtils.RecordInfo;
+import org.apache.hadoop.hive.serde2.lazybinary.LazyBinaryUtils.VInt;
 import 
org.apache.hadoop.hive.serde2.lazybinary.objectinspector.LazyBinaryStructObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.StructField;
@@ -96,7 +97,8 @@ public class LazyBinaryStruct extends La
     serializedSize = length;
   }
 
-  RecordInfo recordInfo = new LazyBinaryUtils.RecordInfo();
+  final VInt vInt = new VInt();
+  final RecordInfo recordInfo = new LazyBinaryUtils.RecordInfo();
   boolean missingFieldWarned = false;
   boolean extraFieldWarned = false;
 
@@ -138,7 +140,7 @@ public class LazyBinaryStruct extends La
       if ((nullByte & (1 << (i % 8))) != 0) {
         fieldIsNull[i] = false;
         LazyBinaryUtils.checkObjectByteInfo(fieldRefs.get(i)
-            .getFieldObjectInspector(), bytes, lastFieldByteEnd, recordInfo);
+            .getFieldObjectInspector(), bytes, lastFieldByteEnd, recordInfo, 
vInt);
         fieldStart[i] = lastFieldByteEnd + recordInfo.elementOffset;
         fieldLength[i] = recordInfo.elementSize;
         lastFieldByteEnd = fieldStart[i] + fieldLength[i];
@@ -200,6 +202,7 @@ public class LazyBinaryStruct extends La
   }
 
   public static final class SingleFieldGetter {
+    private final VInt vInt = new VInt();
     private final LazyBinaryStructObjectInspector soi;
     private final int fieldIndex;
     private final RecordInfo recordInfo = new LazyBinaryUtils.RecordInfo();
@@ -219,7 +222,7 @@ public class LazyBinaryStruct extends La
       for (int i = 0; i <= fieldIndex; i++) {
         if ((nullByte & (1 << (i % 8))) != 0) {
           LazyBinaryUtils.checkObjectByteInfo(fieldRefs.get(i)
-              .getFieldObjectInspector(), fieldBytes, lastFieldByteEnd, 
recordInfo);
+              .getFieldObjectInspector(), fieldBytes, lastFieldByteEnd, 
recordInfo, vInt);
           fieldStart = lastFieldByteEnd + recordInfo.elementOffset;
           fieldLength = recordInfo.elementSize;
           lastFieldByteEnd = fieldStart + fieldLength;

Modified: 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryUtils.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryUtils.java?rev=1618671&r1=1618670&r2=1618671&view=diff
==============================================================================
--- 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryUtils.java
 (original)
+++ 
hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazybinary/LazyBinaryUtils.java
 Mon Aug 18 17:32:15 2014
@@ -125,13 +125,6 @@ public final class LazyBinaryUtils {
     }
   }
 
-  private static ThreadLocal<VInt> vIntThreadLocal = new ThreadLocal<VInt>() {
-    @Override
-    public VInt initialValue() {
-      return new VInt();
-    }
-  };
-
   /**
    * Check a particular field and set its size and offset in bytes based on the
    * field type and the bytes arrays.
@@ -154,8 +147,7 @@ public final class LazyBinaryUtils {
    *          modify this byteinfo object and return it
    */
   public static void checkObjectByteInfo(ObjectInspector objectInspector,
-      byte[] bytes, int offset, RecordInfo recordInfo) {
-    VInt vInt = vIntThreadLocal.get();
+      byte[] bytes, int offset, RecordInfo recordInfo, VInt vInt) {
     Category category = objectInspector.getCategory();
     switch (category) {
     case PRIMITIVE:


Reply via email to