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

neoremind commented on CALCITE-3878:
------------------------------------

[~julianhyde] Many thanks for your reply. I understand your concern and think 
the solution makes sense. I update my PR to address your comment, my rationales 
are:

1) Apply changes to where column fields or projections are needed, since 
selection list size might bigger than 10.

2) Update a critical path in Prepare.java, since materializations is usually an 
empty immutable list.
{code:java}
- final List<RelOptMaterialization> materializationList = new ArrayList<>();
+ final List<RelOptMaterialization> materializationList = new 
ArrayList<>(materializations.size());
{code}

> Make ArrayList creation with initial capacity when size is fixed
> ----------------------------------------------------------------
>
>                 Key: CALCITE-3878
>                 URL: https://issues.apache.org/jira/browse/CALCITE-3878
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 1.22.0
>            Reporter: neoremind
>            Priority: Minor
>              Labels: pull-request-available
>          Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> I find many places in Calcite where _new ArrayList<>()_ is used, if the list 
> is expected to be immutable or not resizing, it is always a good manner to 
> create with initial capacity, better for memory usage and performance.
> I search all occurrences, focus on the core module, to make it safe, I only 
> update local variables with fixed size and not working in recursive method. 
> If the local variable reference goes out of scope, if resizing is needed, 
> things will work normally as well, so no side effect, but for the "escaping" 
> case, I am very conservative and do not change them.
>  
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to