[ https://issues.apache.org/jira/browse/CALCITE-4144?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
zhangchenghui updated CALCITE-4144: ----------------------------------- Environment: version: calcite-core 1.24 mode: filterableTable was: version: calcite-core 1.21 model: filterableTable > Reduce code generation and class loading overhead when getScalar in > JaninoRexCompiler. > -------------------------------------------------------------------------------------- > > Key: CALCITE-4144 > URL: https://issues.apache.org/jira/browse/CALCITE-4144 > Project: Calcite > Issue Type: Improvement > Components: core > Affects Versions: 1.24.0 > Environment: version: calcite-core 1.24 > mode: filterableTable > Reporter: zhangchenghui > Priority: Major > Labels: cache, scalar > Fix For: 1.25.0 > > Attachments: image-2020-07-27-22-44-44-455.png, > image-2020-07-27-22-45-25-350.png, image-2020-07-27-22-45-54-346.png, > image-2020-07-27-22-46-18-306.png, image-2020-07-29-13-48-53-028.png > > Original Estimate: 96h > Remaining Estimate: 96h > > I used the FilterableTable mode in the project, but I found that the query > was particularly slow. I used the JProfile tool to troubleshoot the thread > time-consuming place, and then through the debug, I found that each request > took two places: > 1、org.apache.calcite.adapter.enumerable.EnumerableInterpretable#getBindable > !image-2020-07-27-22-44-44-455.png! > This place optimizes the cache settings by setting the cache size. > 2、org.apache.calcite.interpreter.JaninoRexCompiler#baz > !image-2020-07-27-22-45-25-350.png! > But this place is not cached, and a new expression string is used every time > to create it through reflection. > JProfile tool time consumption: > !image-2020-07-27-22-45-54-346.png! > I originally wanted to add a layer of cache here, but found that the > expressions generated each time are different, as follows: > !image-2020-07-27-22-46-18-306.png! > So you can't use the getBindable method to directly add cache. > Is there anything you can optimize here? For example, can you generate a > template class in advance, and then generate different objects through > different parameter values? > Bring tea to the boss! > Looking forward to your reply! -- This message was sent by Atlassian Jira (v8.3.4#803005)