From 4dba865995e4940f897c18afff60501fa9cce05a Mon Sep 17 00:00:00 2001 From: Harry Chan <38070640+hc-codersatlas@users.noreply.github.com> Date: Tue, 29 Jan 2019 13:42:02 +1100 Subject: [PATCH] Optimize toArray (#484) replace toArray(new T[size]) with toArray(new T[0]) for better performance https://shipilev.net/blog/2016/arrays-wisdom-ancients/#_conclusion --- .../taobao/arthas/core/command/monitor200/ThreadCommand.java | 2 +- .../main/java/com/taobao/arthas/core/config/FeatureCodec.java | 2 +- core/src/main/java/com/taobao/arthas/core/util/StringUtils.java | 2 +- .../main/java/com/taobao/arthas/core/util/TypeRenderUtils.java | 2 +- .../java/com/taobao/arthas/core/util/reflect/FieldUtils.java | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/com/taobao/arthas/core/command/monitor200/ThreadCommand.java b/core/src/main/java/com/taobao/arthas/core/command/monitor200/ThreadCommand.java index aa4c76692..11ca228ae 100644 --- a/core/src/main/java/com/taobao/arthas/core/command/monitor200/ThreadCommand.java +++ b/core/src/main/java/com/taobao/arthas/core/command/monitor200/ThreadCommand.java @@ -129,7 +129,7 @@ public class ThreadCommand extends AnnotatedCommand { private void processTopBusyThreads(CommandProcess process) { Map topNThreads = ThreadUtil.getTopNThreads(sampleInterval, topNBusy); - Long[] tids = topNThreads.keySet().toArray(new Long[topNThreads.keySet().size()]); + Long[] tids = topNThreads.keySet().toArray(new Long[0]); ThreadInfo[] threadInfos = threadMXBean.getThreadInfo(ArrayUtils.toPrimitive(tids), true, true); if (threadInfos == null) { process.write("thread do not exist! id: " + id + "\n"); diff --git a/core/src/main/java/com/taobao/arthas/core/config/FeatureCodec.java b/core/src/main/java/com/taobao/arthas/core/config/FeatureCodec.java index 250dff9f7..fa9c2e354 100644 --- a/core/src/main/java/com/taobao/arthas/core/config/FeatureCodec.java +++ b/core/src/main/java/com/taobao/arthas/core/config/FeatureCodec.java @@ -236,7 +236,7 @@ public class FeatureCodec { } - return segmentArrayList.toArray(new String[segmentArrayList.size()]); + return segmentArrayList.toArray(new String[0]); } diff --git a/core/src/main/java/com/taobao/arthas/core/util/StringUtils.java b/core/src/main/java/com/taobao/arthas/core/util/StringUtils.java index 79a96f0c9..9774e41f8 100644 --- a/core/src/main/java/com/taobao/arthas/core/util/StringUtils.java +++ b/core/src/main/java/com/taobao/arthas/core/util/StringUtils.java @@ -538,7 +538,7 @@ public abstract class StringUtils { public static String[] toStringArray(Collection collection) { - return collection == null?null:(String[])collection.toArray(new String[collection.size()]); + return collection == null?null:(String[])collection.toArray(new String[0]); } public static String[] split(String toSplit, String delimiter) { diff --git a/core/src/main/java/com/taobao/arthas/core/util/TypeRenderUtils.java b/core/src/main/java/com/taobao/arthas/core/util/TypeRenderUtils.java index 430ae5c56..27669e011 100644 --- a/core/src/main/java/com/taobao/arthas/core/util/TypeRenderUtils.java +++ b/core/src/main/java/com/taobao/arthas/core/util/TypeRenderUtils.java @@ -160,6 +160,6 @@ public class TypeRenderUtils { types.add(annotation.annotationType()); } } - return StringUtils.concat(",", types.toArray(new Class[types.size()])); + return StringUtils.concat(",", types.toArray(new Class[0])); } } diff --git a/core/src/main/java/com/taobao/arthas/core/util/reflect/FieldUtils.java b/core/src/main/java/com/taobao/arthas/core/util/reflect/FieldUtils.java index 932cdc43f..9aa3fd13a 100644 --- a/core/src/main/java/com/taobao/arthas/core/util/reflect/FieldUtils.java +++ b/core/src/main/java/com/taobao/arthas/core/util/reflect/FieldUtils.java @@ -238,7 +238,7 @@ public class FieldUtils { */ public static Field[] getAllFields(final Class cls) { final List allFieldsList = getAllFieldsList(cls); - return allFieldsList.toArray(new Field[allFieldsList.size()]); + return allFieldsList.toArray(new Field[0]); } /**