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

Aleksey Plekhanov commented on IGNITE-25909:
--------------------------------------------

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)

Reply via email to