[
https://issues.apache.org/jira/browse/CALCITE-1012?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15049395#comment-15049395
]
Vladimir Sitnikov commented on CALCITE-1012:
--------------------------------------------
{code:java}
public void ReInit(java.io.Reader stream) {
jj_input_stream.ReInit(stream, 1, 1);
token_source.ReInit(jj_input_stream);
token = new Token();
jj_ntk = -1;
jj_gen = 0;
for (int i = 0; i < 4; i++) jj_la1[i] = -1;
/* line 16697 */ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] =
new JJCalls(); // <-- This allocates quite a bit of objects
}
{code}
Trivial {{jjcalls.clear()}} trims down allocations to 5'000 bytes:
{code:java}
- for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i].reset();
..
static final class JJCalls {
int gen;
Token first;
int arg;
JJCalls next;
// added
public void reset() {
gen = 0;
first = null;
arg = 0;
next = null;
}
}
{code}
{noformat}
Benchmark (comments) (length) Mode
Cnt Score Error Units
ParserBenchmark.parseCached true 10 avgt
7 21,804 ± 0,673 us/op
ParserBenchmark.parseCached:·gc.alloc.rate.norm true 10 avgt
7 4952,163 ± 0,906 B/op
ParserBenchmark.parseNonCached true 10 avgt
7 30,627 ± 0,932 us/op
ParserBenchmark.parseNonCached:·gc.alloc.rate.norm true 10 avgt
7 74552,402 ± 1,564 B/op
{noformat}
> Benchmark SQL parser
> --------------------
>
> Key: CALCITE-1012
> URL: https://issues.apache.org/jira/browse/CALCITE-1012
> Project: Calcite
> Issue Type: Bug
> Reporter: Julian Hyde
> Assignee: Julian Hyde
> Attachments: allocations1.png, allocations2.png, allocations3.png,
> allocations4.png
>
>
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)