[ 
https://issues.apache.org/jira/browse/PHOENIX-4004?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16079725#comment-16079725
 ] 

Lars Hofhansl commented on PHOENIX-4004:
----------------------------------------

Minor nits:
{code}
-    Collection<Pair<Mutation, byte[]>> indexUpdates = new 
ArrayList<Pair<Mutation, byte[]>>();
+    // Avoid multiple internal array resizings. Initial size of 64, unless we 
have fewer cells in the edit
+    int initialSize = Math.min(edit.size(), 64);
{code}

Why not just set it to edit.size()? Looking at the code, we'll never add more 
cells to {{indexUpdates}} than there are cells in the edit. Not need to have a 
minimum of 64.

{code}
+    // Avoid the Object overhead of the executor when it's not actually 
parallelizing anything.
+    ArrayList<Pair<Mutation, byte[]>> results = new 
ArrayList<>(mutations.size());
+    for (Mutation m : mutations) {
+      results.addAll(delegate.getIndexUpdate(m, indexMetaData));
+    }
+    return results;
+  }
+  // Essentially unused due to the deadlock described in PHOENIX-2671. Leaving 
for posterity..
+  public Collection<Pair<Mutation, byte[]>> getIndexUpdateWithPool(
{code}

Just remove it. Posterity/history is what git is for :)
Also can get rid of the {{pool}} member and remove the constructor now.

> Assorted improvements to reduce garbage in mutable index codepath
> -----------------------------------------------------------------
>
>                 Key: PHOENIX-4004
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-4004
>             Project: Phoenix
>          Issue Type: Improvement
>            Reporter: Josh Elser
>            Assignee: Josh Elser
>            Priority: Minor
>             Fix For: 4.12.0
>
>         Attachments: PHOENIX-4004.001.patch
>
>
> During some $dayjob testing, I found a couple of places where we were 
> unnecessarily creating garbage in the RS. When "forward-porting" this change, 
> most of the areas were already cleaned up but there are a few that still 
> apply.
> * ArrayList initial sizing
> * Avoid indirection of the (single-threaded) ExecutorService in 
> IndexBuildManager (just pure overhead)
> * Some unnecessary KeyValue copies and an array copy (an avoidance of 
> deprecated HBase API)
> * Avoid extra {{System.arraycopy}} calls in CoveredColumnIndexCodec via the 
> {{ArrayUtils.addAll}} call



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to