You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ni...@apache.org on 2019/05/31 14:35:05 UTC

[kylin] branch master updated: Additional small performance improvements (#651)

This is an automated email from the ASF dual-hosted git repository.

nic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kylin.git


The following commit(s) were added to refs/heads/master by this push:
     new 581299b  Additional small performance improvements (#651)
581299b is described below

commit 581299bcb4d81540537d784fe0a468fecfd9c84e
Author: Michael Hausegger <ha...@googlemail.com>
AuthorDate: Fri May 31 16:35:00 2019 +0200

    Additional small performance improvements (#651)
    
    * Additional small performance improvements
---
 .../org/apache/kylin/dict/TableColumnValueSortedEnumerator.java   | 2 +-
 .../java/org/apache/kylin/dict/TrieDictionaryForestBuilder.java   | 2 +-
 .../main/java/org/apache/kylin/dict/global/AppendDictNode.java    | 4 ++--
 .../src/main/java/org/apache/kylin/dict/lookup/SnapshotTable.java | 2 +-
 .../java/org/apache/kylin/measure/topn/TopNCounterSerializer.java | 2 +-
 .../main/java/org/apache/kylin/metadata/model/TableExtDesc.java   | 2 +-
 .../main/java/org/apache/kylin/engine/spark/SparkExecutable.java  | 3 +--
 jdbc/src/main/java/org/apache/kylin/jdbc/KylinResultSet.java      | 2 +-
 .../org/apache/kylin/rest/controller/StreamingV2Controller.java   | 2 +-
 .../src/main/java/org/apache/kylin/rest/util/ValidateUtil.java    | 2 +-
 .../org/apache/kylin/stream/core/query/StreamingQueryProfile.java | 3 ++-
 .../org/apache/kylin/stream/core/storage/columnar/RawRecord.java  | 8 ++------
 .../main/java/org/apache/kylin/stream/server/StreamingServer.java | 2 +-
 .../java/org/apache/kylin/stream/server/rest/util/QueryUtil.java  | 5 ++---
 14 files changed, 18 insertions(+), 23 deletions(-)

diff --git a/core-dictionary/src/main/java/org/apache/kylin/dict/TableColumnValueSortedEnumerator.java b/core-dictionary/src/main/java/org/apache/kylin/dict/TableColumnValueSortedEnumerator.java
index 8f9f74f..df10745 100644
--- a/core-dictionary/src/main/java/org/apache/kylin/dict/TableColumnValueSortedEnumerator.java
+++ b/core-dictionary/src/main/java/org/apache/kylin/dict/TableColumnValueSortedEnumerator.java
@@ -72,7 +72,7 @@ public class TableColumnValueSortedEnumerator implements IDictionaryValueEnumera
 
     @Override
     public boolean moveNext() throws IOException {
-        while (pq.size() > 0) {
+        while (!pq.isEmpty()) {
             ReaderBuffer buffer = pq.poll();
             String minEntry = buffer.pop();
             this.colValue = minEntry;
diff --git a/core-dictionary/src/main/java/org/apache/kylin/dict/TrieDictionaryForestBuilder.java b/core-dictionary/src/main/java/org/apache/kylin/dict/TrieDictionaryForestBuilder.java
index 10d63e1..e983910 100644
--- a/core-dictionary/src/main/java/org/apache/kylin/dict/TrieDictionaryForestBuilder.java
+++ b/core-dictionary/src/main/java/org/apache/kylin/dict/TrieDictionaryForestBuilder.java
@@ -89,7 +89,7 @@ public class TrieDictionaryForestBuilder<T> {
             if (comp > 0) {
                 logger.info("values not in ascending order, previous '{}', current '{}'", previousValue, valueByteArray);
                 isOrdered = false;
-                if (trees.size() > 0) {
+                if (!trees.isEmpty()) {
                     throw new IllegalStateException("Invalid input data. Unordered data cannot be split into multi trees");
                 }
             }
diff --git a/core-dictionary/src/main/java/org/apache/kylin/dict/global/AppendDictNode.java b/core-dictionary/src/main/java/org/apache/kylin/dict/global/AppendDictNode.java
index c25e9b0..cdae64a 100644
--- a/core-dictionary/src/main/java/org/apache/kylin/dict/global/AppendDictNode.java
+++ b/core-dictionary/src/main/java/org/apache/kylin/dict/global/AppendDictNode.java
@@ -113,7 +113,7 @@ public class AppendDictNode {
         AppendDictNode p = this;
         while (true) {
             bytes.write(p.part, 0, p.part.length);
-            if (p.isEndOfValue || p.children.size() == 0) {
+            if (p.isEndOfValue || p.children.isEmpty()) {
                 break;
             }
             p = p.children.get(0);
@@ -381,4 +381,4 @@ public class AppendDictNode {
             }, 0);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotTable.java b/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotTable.java
index 6cae22b..b745ab6 100644
--- a/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotTable.java
+++ b/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotTable.java
@@ -233,7 +233,7 @@ public class SnapshotTable extends RootPersistentEntity implements IReadableTabl
 
     void writeData(DataOutput out) throws IOException {
         out.writeInt(rowIndices.size());
-        if (rowIndices.size() > 0) {
+        if (!rowIndices.isEmpty()) {
             int n = rowIndices.get(0).length;
             out.writeInt(n);
 
diff --git a/core-metadata/src/main/java/org/apache/kylin/measure/topn/TopNCounterSerializer.java b/core-metadata/src/main/java/org/apache/kylin/measure/topn/TopNCounterSerializer.java
index aec8d6d..7dac160 100644
--- a/core-metadata/src/main/java/org/apache/kylin/measure/topn/TopNCounterSerializer.java
+++ b/core-metadata/src/main/java/org/apache/kylin/measure/topn/TopNCounterSerializer.java
@@ -73,7 +73,7 @@ public class TopNCounterSerializer extends DataTypeSerializer<TopNCounter<ByteAr
     public void serialize(TopNCounter<ByteArray> value, ByteBuffer out) {
         double[] counters = value.getCounters();
         List<Counter<ByteArray>> peek = value.topK(1);
-        int keyLength = peek.size() > 0 ? peek.get(0).getItem().length() : 0;
+        int keyLength = !peek.isEmpty() ? peek.get(0).getItem().length() : 0;
         out.putInt(value.getCapacity());
         out.putInt(value.size());
         out.putInt(keyLength);
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/model/TableExtDesc.java b/core-metadata/src/main/java/org/apache/kylin/metadata/model/TableExtDesc.java
index 74cc2db..0890e42 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/TableExtDesc.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/TableExtDesc.java
@@ -158,7 +158,7 @@ public class TableExtDesc extends RootPersistentEntity {
 
         String[] cardi = cardinality.split(",");
 
-        if (0 == this.columnStats.size()) {
+        if (this.columnStats.isEmpty()) {
             for (int i = 0; i < cardi.length; i++) {
                 ColumnStats columnStat = new ColumnStats();
                 columnStat.setCardinality(Long.parseLong(cardi[i]));
diff --git a/engine-spark/src/main/java/org/apache/kylin/engine/spark/SparkExecutable.java b/engine-spark/src/main/java/org/apache/kylin/engine/spark/SparkExecutable.java
index b5e8cce..a6cbc23 100644
--- a/engine-spark/src/main/java/org/apache/kylin/engine/spark/SparkExecutable.java
+++ b/engine-spark/src/main/java/org/apache/kylin/engine/spark/SparkExecutable.java
@@ -440,8 +440,7 @@ public class SparkExecutable extends AbstractExecutable {
     }
 
     private void attachSegmentsMetadataWithDict(List<CubeSegment> segments) throws IOException {
-        Set<String> dumpList = new LinkedHashSet<>();
-        dumpList.addAll(JobRelatedMetaUtil.collectCubeMetadata(segments.get(0).getCubeInstance()));
+        Set<String> dumpList = new LinkedHashSet<>(JobRelatedMetaUtil.collectCubeMetadata(segments.get(0).getCubeInstance()));
         ResourceStore rs = ResourceStore.getStore(segments.get(0).getConfig());
         for (CubeSegment segment : segments) {
             dumpList.addAll(segment.getDictionaryPaths());
diff --git a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinResultSet.java b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinResultSet.java
index 5465bd0..b51fb75 100644
--- a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinResultSet.java
+++ b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinResultSet.java
@@ -56,7 +56,7 @@ public class KylinResultSet extends AvaticaResultSet {
         List<Object> paramValues = null;
         if (!(statement instanceof KylinPreparedStatement)) {
             params = null;
-        } else if (params != null && params.size() > 0) {
+        } else if (params != null && !params.isEmpty()) {
             paramValues = ((KylinPreparedStatement) statement).getParameterJDBCValues();
         }
 
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingV2Controller.java b/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingV2Controller.java
index 03862ca..f22ec89 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingV2Controller.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller/StreamingV2Controller.java
@@ -218,7 +218,7 @@ public class StreamingV2Controller extends BasicController {
                     incompatibleMsgs.add(msg);
                 }
             }
-            if (incompatibleMsgs.size() > 0) {
+            if (!incompatibleMsgs.isEmpty()) {
                 logger.info("incompatible for hive and input table schema:{}", incompatibleMsgs);
                 throw new BadRequestException("incompatible for hive schema and input table schema:" + incompatibleMsgs);
             }
diff --git a/server-base/src/main/java/org/apache/kylin/rest/util/ValidateUtil.java b/server-base/src/main/java/org/apache/kylin/rest/util/ValidateUtil.java
index 1d56a71..fe957fc 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/util/ValidateUtil.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/util/ValidateUtil.java
@@ -149,7 +149,7 @@ public class ValidateUtil {
     }
 
     public void validateColumn(String project, String table, Collection<String> columns) throws IOException {
-        Preconditions.checkState(columns != null && columns.size() > 0);
+        Preconditions.checkState(columns != null && !columns.isEmpty());
         Set<String> cols = getAllColumns(project, table);
         for (String c : columns) {
             if (!cols.contains(c)) {
diff --git a/stream-core/src/main/java/org/apache/kylin/stream/core/query/StreamingQueryProfile.java b/stream-core/src/main/java/org/apache/kylin/stream/core/query/StreamingQueryProfile.java
index d121139..38e31ab 100644
--- a/stream-core/src/main/java/org/apache/kylin/stream/core/query/StreamingQueryProfile.java
+++ b/stream-core/src/main/java/org/apache/kylin/stream/core/query/StreamingQueryProfile.java
@@ -187,7 +187,8 @@ public class StreamingQueryProfile {
                 builder.append(properties.toString());
             }
             builder.append("    ");
-            builder.append(duration + "ms");
+            builder.append(duration);
+            builder.append("ms");
             return builder.toString();
         }
     }
diff --git a/stream-core/src/main/java/org/apache/kylin/stream/core/storage/columnar/RawRecord.java b/stream-core/src/main/java/org/apache/kylin/stream/core/storage/columnar/RawRecord.java
index 464778d..952419a 100644
--- a/stream-core/src/main/java/org/apache/kylin/stream/core/storage/columnar/RawRecord.java
+++ b/stream-core/src/main/java/org/apache/kylin/stream/core/storage/columnar/RawRecord.java
@@ -38,12 +38,8 @@ public class RawRecord {
         if (another.getDimensions().length != dimensions.length || another.getMetrics().length != metrics.length) {
             throw new IllegalStateException("cannot copy record with different schema");
         }
-        for (int i = 0; i < another.dimensions.length; i++) {
-            this.dimensions[i] = another.dimensions[i];
-        }
-        for (int i = 0; i < another.metrics.length; i++) {
-            this.metrics[i] = another.metrics[i];
-        }
+        System.arraycopy(another.dimensions, 0, this.dimensions, 0, another.dimensions.length);
+        System.arraycopy(another.metrics, 0, this.metrics, 0, another.metrics.length);
     }
 
     public RawRecord clone() {
diff --git a/stream-receiver/src/main/java/org/apache/kylin/stream/server/StreamingServer.java b/stream-receiver/src/main/java/org/apache/kylin/stream/server/StreamingServer.java
index 01e4aa4..97dc883 100644
--- a/stream-receiver/src/main/java/org/apache/kylin/stream/server/StreamingServer.java
+++ b/stream-receiver/src/main/java/org/apache/kylin/stream/server/StreamingServer.java
@@ -511,7 +511,7 @@ public class StreamingServer implements ReplicaSetLeaderSelector.LeaderChangeLis
     public void remoteSegmentBuildComplete(String cubeName, String segmentName) {
         StreamingSegmentManager segmentManager = getStreamingSegmentManager(cubeName);
         List<String> removedSegments = segmentManager.remoteSegmentBuildComplete(segmentName);
-        if (removedSegments.size() > 0) {
+        if (!removedSegments.isEmpty()) {
             resumeConsumerIfPaused(cubeName);
         }
     }
diff --git a/stream-receiver/src/main/java/org/apache/kylin/stream/server/rest/util/QueryUtil.java b/stream-receiver/src/main/java/org/apache/kylin/stream/server/rest/util/QueryUtil.java
index 200323c..aca1fd4 100644
--- a/stream-receiver/src/main/java/org/apache/kylin/stream/server/rest/util/QueryUtil.java
+++ b/stream-receiver/src/main/java/org/apache/kylin/stream/server/rest/util/QueryUtil.java
@@ -19,6 +19,7 @@
 package org.apache.kylin.stream.server.rest.util;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
@@ -106,9 +107,7 @@ public class QueryUtil {
     static {
         for (String q : tableauTestQueries) {
             HashSet<String> temp = new HashSet<String>();
-            for (String token : q.split("[\r\n\t \\(\\)]")) {
-                temp.add(token);
-            }
+            Collections.addAll(temp, q.split("[\r\n\t \\(\\)]"));
             temp.add("");
             tableauTestQueriesInToken.add(temp);
         }