Uploaded image for project: 'Kylin'
  1. Kylin
  2. KYLIN-3196

Replace StringUtils.containsOnly with Regex

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: v2.3.0
    • Component/s: REST Service
    • Labels:
      None

      Description

      Notice that we use StringUtils.contains to validate project/cube/model names. It's not high efficiency and elegant.

       

      I did a small test:

      public class TempTest {
          Pattern r = Pattern.compile("^[a-zA-Z0-9_]*$");
          @Test
          public void test() {
              final char[] VALID_MODELNAME = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_".toCharArray();
              String s1 = "abc@";
              System.out.println("Call StringUtils.containsOnly 100 times");
              long start = System.nanoTime();
              for(int i =0; i<100; ++i) {
                  StringUtils.containsOnly(s1, VALID_MODELNAME);
              }
              long end = System.nanoTime();
              System.out.println(end - start);
      
              System.out.println("Call Regex match 100 times");
              start = System.nanoTime();
              for(int i =0; i<100; ++i) {
                  containsByRegex(s1);
              }
              end = System.nanoTime();
              System.out.println(end - start);
      
          }
      
          private boolean containsByRegex(final String s) {
              Matcher matcher = r.matcher(s);
              return matcher.find();
          }
      }

      The result shows:

      Call StringUtils.containsOnly 100 times
      4740997
      Call Regex match 100 times
      753182
      

       

      Conclusion:

      Regex is better than StringUtils.containsOnly

        Attachments

          Activity

            People

            • Assignee:
              liukaige Kaige Liu
              Reporter:
              liukaige Kaige Liu
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: