[ https://issues.apache.org/jira/browse/DRILL-4573?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15301532#comment-15301532 ]
Jinfeng Ni commented on DRILL-4573: ----------------------------------- One thing you may consider: use different logic for ASCII string and non-ASCII string. You can easily scan the input byte array and detect it falls into which category. For the 1st case, you can use your zero-copy logic. For 2nd case, it has to do copy. This way, we get much better performance for more commonly used ASCII string, and not-worse-than-before performance for non-ASCII string. > Zero copy LIKE, REGEXP_MATCHES, SUBSTR > -------------------------------------- > > Key: DRILL-4573 > URL: https://issues.apache.org/jira/browse/DRILL-4573 > Project: Apache Drill > Issue Type: Improvement > Reporter: jean-claude > Priority: Minor > Fix For: 1.7.0 > > Attachments: DRILL-4573-3.patch.txt, DRILL-4573.patch.txt > > > All the functions using the java.util.regex.Matcher are currently creating > Java string objects to pass into the matcher.reset(). > However this creates unnecessary copy of the bytes and a Java string object. > The matcher uses a CharSequence, so instead of making a copy we can create an > adapter from the DrillBuffer to the CharSequence interface. > Gains of 25% in execution speed are possible when going over VARCHAR of 36 > chars. The gain will be proportional to the size of the VARCHAR. -- This message was sent by Atlassian JIRA (v6.3.4#6332)