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: