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

zhangchenghui commented on CALCITE-4144:
----------------------------------------

[~zabetak]
thanks for your reply!
My idea is almost the same as yours. Is your original intention of using 
JaninoRexCompiler to achieve versatility through reflection? Almost all SQL in 
my project has a fixed format, but the parameters are different. Can I use it 
at this time? Foocompiler?

> 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.21.0
>         Environment: version: calcite-core 1.21
> model: 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
>
>   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)

Reply via email to