[ https://issues.apache.org/jira/browse/CALCITE-2703?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16766414#comment-16766414 ]
Julian Hyde commented on CALCITE-2703: -------------------------------------- The change looks fine. I'd like some documentation around the property. I can't easily tell whether the cache is enabled or disabled by default. How about a class, similar to CalciteResource or CalciteConnectionConfig, that holds all of the system properties that we use, throughout the code: their paths ("calcite.bindable.cache.maxSize"), types, default values, and a description of their use. > Reduce code generation and class loading overhead when executing queries in > the EnumerableConvention > ---------------------------------------------------------------------------------------------------- > > Key: CALCITE-2703 > URL: https://issues.apache.org/jira/browse/CALCITE-2703 > Project: Calcite > Issue Type: Improvement > Components: core > Affects Versions: 1.17.0 > Reporter: Stamatis Zampetakis > Assignee: Julian Hyde > Priority: Major > Labels: performance, pull-request-available > > The queries using Calcite's EnumerableConvention always end-up generating new > java classes at runtime (using Janino) that are then instantiated using > reflection. This combination of class generation and class loading introduces > a big overhead in query response time. > A quick profiling on our Company's internal test suite consisting in 4000 > tests with roughly 430000 SQL queries passing through Calcite we observed > that a big amount of time is spend on code generation and class loading > making the EnumerableInterpretable#toBindable method a performance > bottleneck. > Among the 430000 SQL queries there are many duplicates which are going to > lead to the generation of exactly the same code Java. Introducing, a small > cache at the level of EnumerableInterpretable class could avoid generating > and loading the same code over and over again. > A simple implementation based on Guava improved the overall execution time of > the afforementioned test suite by more than 50%. > > -- This message was sent by Atlassian JIRA (v7.6.3#76005)