zhangchenghui created CALCITE-4144:
--------------------------------------

             Summary: 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
             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

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! 

我本来想在这里加一层缓存的,但发现每次生成的表达式都是不一样,如下:
 !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