From 26777bd9e29223db7eb7b927def4175098db3356 Mon Sep 17 00:00:00 2001 From: Vivek Iyer Vaidyanathan Date: Fri, 14 Oct 2022 17:31:03 -0700 Subject: [PATCH] Optimize for loop in ForwardIndexHandler --- .../index/loader/ForwardIndexHandler.java | 48 ++++++++++++------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/loader/ForwardIndexHandler.java b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/loader/ForwardIndexHandler.java index d06df3c55dc9..67ba9ff6e690 100644 --- a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/loader/ForwardIndexHandler.java +++ b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/loader/ForwardIndexHandler.java @@ -298,11 +298,11 @@ private void forwardIndexWriterHelper(String column, ForwardIndexReader reader, ForwardIndexReaderContext readerContext = reader.createContext(); boolean isSVColumn = reader.isSingleValue(); - for (int i = 0; i < numDocs; i++) { + switch (reader.getStoredType()) { // JSON fields are either stored as string or bytes. No special handling is needed because we make this // decision based on the storedType of the reader. - switch (reader.getStoredType()) { - case INT: { + case INT: { + for (int i = 0; i < numDocs; i++) { if (isSVColumn) { int val = reader.getInt(i, readerContext); creator.putInt(val); @@ -310,9 +310,11 @@ private void forwardIndexWriterHelper(String column, ForwardIndexReader reader, int[] ints = reader.getIntMV(i, readerContext); creator.putIntMV(ints); } - break; } - case LONG: { + break; + } + case LONG: { + for (int i = 0; i < numDocs; i++) { if (isSVColumn) { long val = reader.getLong(i, readerContext); creator.putLong(val); @@ -320,9 +322,11 @@ private void forwardIndexWriterHelper(String column, ForwardIndexReader reader, long[] longs = reader.getLongMV(i, readerContext); creator.putLongMV(longs); } - break; } - case FLOAT: { + break; + } + case FLOAT: { + for (int i = 0; i < numDocs; i++) { if (isSVColumn) { float val = reader.getFloat(i, readerContext); creator.putFloat(val); @@ -330,9 +334,11 @@ private void forwardIndexWriterHelper(String column, ForwardIndexReader reader, float[] floats = reader.getFloatMV(i, readerContext); creator.putFloatMV(floats); } - break; } - case DOUBLE: { + break; + } + case DOUBLE: { + for (int i = 0; i < numDocs; i++) { if (isSVColumn) { double val = reader.getDouble(i, readerContext); creator.putDouble(val); @@ -340,9 +346,11 @@ private void forwardIndexWriterHelper(String column, ForwardIndexReader reader, double[] doubles = reader.getDoubleMV(i, readerContext); creator.putDoubleMV(doubles); } - break; } - case STRING: { + break; + } + case STRING: { + for (int i = 0; i < numDocs; i++) { if (isSVColumn) { String val = reader.getString(i, readerContext); creator.putString(val); @@ -350,9 +358,11 @@ private void forwardIndexWriterHelper(String column, ForwardIndexReader reader, String[] strings = reader.getStringMV(i, readerContext); creator.putStringMV(strings); } - break; } - case BYTES: { + break; + } + case BYTES: { + for (int i = 0; i < numDocs; i++) { if (isSVColumn) { byte[] val = reader.getBytes(i, readerContext); creator.putBytes(val); @@ -360,17 +370,19 @@ private void forwardIndexWriterHelper(String column, ForwardIndexReader reader, byte[][] bytesArray = reader.getBytesMV(i, readerContext); creator.putBytesMV(bytesArray); } - break; } - case BIG_DECIMAL: { + break; + } + case BIG_DECIMAL: { + for (int i = 0; i < numDocs; i++) { Preconditions.checkState(isSVColumn, "BigDecimal is not supported for MV columns"); BigDecimal val = reader.getBigDecimal(i, readerContext); creator.putBigDecimal(val); - break; } - default: - throw new IllegalStateException(); + break; } + default: + throw new IllegalStateException(); } } }