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

Replace StringUtils.containsOnly with Regex

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • None
    • v2.3.0
    • REST Service
    • 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

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

            Dates

              Created:
              Updated:
              Resolved: