[
https://issues.apache.org/jira/browse/IGNITE-25909?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18007306#comment-18007306
]
Aleksey Plekhanov edited comment on IGNITE-25909 at 7/15/25 6:03 PM:
---------------------------------------------------------------------
Benchmark results:
About 20-25% performance boost on set operations (EXCEPT/INTERSECT) and reduced
memory allocation per operation.
Before:
{noformat}
Benchmark (engine) Mode Cnt
Score Error Units
JmhSqlBenchmark.queryExcept CALCITE thrpt 3
857,837 ± 11,671 ops/s
JmhSqlBenchmark.queryExcept:gc.alloc.rate.norm CALCITE thrpt 3
4636321,358 ± 23745,748 B/op
JmhSqlBenchmark.queryIntersect CALCITE thrpt 3
828,688 ± 12,928 ops/s
JmhSqlBenchmark.queryIntersect:gc.alloc.rate.norm CALCITE thrpt 3
5018980,274 ± 33048,961 B/op
{noformat}
After:
{noformat}
Benchmark (engine) Mode Cnt
Score Error Units
JmhSqlBenchmark.queryExcept CALCITE thrpt 3
1090,904 ± 38,658 ops/s
JmhSqlBenchmark.queryExcept:gc.alloc.rate.norm CALCITE thrpt 3
4202361,050 ± 16225,317 B/op
JmhSqlBenchmark.queryIntersect CALCITE thrpt 3
1050,370 ± 81,677 ops/s
JmhSqlBenchmark.queryIntersect:gc.alloc.rate.norm CALCITE thrpt 3
4546147,421 ± 29366,891 B/op
{noformat}
Almost no effect on hash aggregates (performance and memory allocation).
Before:
{noformat}
Benchmark (engine) Mode Cnt
Score Error Units
JmhSqlBenchmark.queryGroupBy CALCITE thrpt 3
128,233 ± 5,726 ops/s
JmhSqlBenchmark.queryGroupBy:gc.alloc.rate.norm CALCITE thrpt 3
45026840,016 ± 201766,880 B/op
JmhSqlBenchmark.queryGroupByUniq CALCITE thrpt 3
11,746 ± 0,470 ops/s
JmhSqlBenchmark.queryGroupByUniq:gc.alloc.rate.norm CALCITE thrpt 3
360240998,554 ± 2269153,883 B/op{noformat}
After:
{noformat}
Benchmark (engine) Mode Cnt
Score Error Units JmhSqlBenchmark.queryGroupBy
CALCITE thrpt 3 132,654 ± 5,289 ops/s
JmhSqlBenchmark.queryGroupBy:gc.alloc.rate.norm CALCITE thrpt 3
45762383,346 ± 228303,553 B/op
JmhSqlBenchmark.queryGroupByUniq CALCITE thrpt 3
11,876 ± 0,780 ops/s
JmhSqlBenchmark.queryGroupByUniq:gc.alloc.rate.norm CALCITE thrpt 3
339434083,911 ± 2106939,563 B/op {noformat}
was (Author: alex_pl):
Benchmark results:
About 20-25% performance boost on set operations (EXCEPT/INTERSECT) and reduced
memory allocation per operation.
Before:
{noformat}
Benchmark (engine) Mode Cnt
Score Error Units
JmhSqlBenchmark.queryExcept CALCITE thrpt 3
857,837 ± 11,671 ops/s
JmhSqlBenchmark.queryExcept:gc.alloc.rate.norm CALCITE thrpt 3
4636321,358 ± 23745,748 B/op
JmhSqlBenchmark.queryIntersect CALCITE thrpt 3
828,688 ± 12,928 ops/s
JmhSqlBenchmark.queryIntersect:gc.alloc.rate.norm CALCITE thrpt 3
5018980,274 ± 33048,961 B/op
{noformat}
After:
{noformat}
Benchmark (engine) Mode Cnt
Score Error Units
JmhSqlBenchmark.queryExcept CALCITE thrpt 3
1090,904 ± 38,658 ops/s
JmhSqlBenchmark.queryExcept:gc.alloc.rate.norm CALCITE thrpt 3
4202361,050 ± 16225,317 B/op
JmhSqlBenchmark.queryIntersect CALCITE thrpt 3
1050,370 ± 81,677 ops/s
JmhSqlBenchmark.queryIntersect:gc.alloc.rate.norm CALCITE thrpt 3
4546147,421 ± 29366,891 B/op
{noformat}
Almost no effect on hash aggregates (performance and memory allocation).
Before:
{noformat}
Benchmark (engine) Mode Cnt
Score Error Units
JmhSqlBenchmark.queryGroupBy CALCITE thrpt 3
128,233 ± 5,726 ops/s
JmhSqlBenchmark.queryGroupBy:gc.alloc.rate.norm CALCITE thrpt 3
45026840,016 ± 201766,880 B/op
JmhSqlBenchmark.queryGroupByUniq CALCITE thrpt 3
11,746 ± 0,470 ops/s
JmhSqlBenchmark.queryGroupByUniq:gc.alloc.rate.norm CALCITE thrpt 3
360240998,554 ± 2269153,883 B/op{noformat}
After:
{noformat}
Benchmark (engine) Mode Cnt
Score Error Units JmhSqlBenchmark.queryGroupBy
CALCITE thrpt 3 132,654 ± 5,289 ops/s
JmhSqlBenchmark.queryGroupBy:gc.alloc.rate.norm CALCITE thrpt 3
45762383,346 ± 228303,553 B/op
JmhSqlBenchmark.queryGroupByUniq CALCITE thrpt 3
11,876 ± 0,780 ops/s
JmhSqlBenchmark.queryGroupByUniq:gc.alloc.rate.norm CALCITE thrpt 3
339434083,911 ± 2106939,563 B/op
{noformat}
> Calcite engine. Avoid redundant array allocation for execution node hash keys
> -----------------------------------------------------------------------------
>
> Key: IGNITE-25909
> URL: https://issues.apache.org/jira/browse/IGNITE-25909
> Project: Ignite
> Issue Type: Improvement
> Reporter: Aleksey Plekhanov
> Assignee: Aleksey Plekhanov
> Priority: Major
> Labels: calcite, ise
>
> We allocate array and copy row fields to key for hash execution nodes (hash
> aggregate, hash set op, hash table spool). Instead wrapper over row can be
> used to reduce object allocation.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)