Github user ppadma commented on a diff in the pull request:

    https://github.com/apache/drill/pull/1001#discussion_r146948741
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/SqlPatternContainsMatcher.java
 ---
    @@ -17,37 +17,166 @@
      */
     package org.apache.drill.exec.expr.fn.impl;
     
    -public class SqlPatternContainsMatcher implements SqlPatternMatcher {
    +public final class SqlPatternContainsMatcher implements SqlPatternMatcher {
       final String patternString;
       CharSequence charSequenceWrapper;
       final int patternLength;
    +  final MatcherFcn matcherFcn;
     
       public SqlPatternContainsMatcher(String patternString, CharSequence 
charSequenceWrapper) {
    -    this.patternString = patternString;
    +    this.patternString       = patternString;
         this.charSequenceWrapper = charSequenceWrapper;
    -    patternLength = patternString.length();
    +    patternLength            = patternString.length();
    +
    +    // The idea is to write loops with simple condition checks to allow 
the Java Hotspot achieve
    +    // better optimizations (especially vectorization)
    +    if (patternLength == 1) {
    +      matcherFcn = new Matcher1();
    --- End diff --
    
    how does  matcherN perform compared to matcher1, matcher2, matcher3 for 
pattern lengths 1, 2 and 3 ? If matcherN performs well for patternLengths 1, 2 
and 3, we can just have one matcher instead of multiple for different pattern 
lengths. 


---

Reply via email to