Commons Validator
  1. Commons Validator
  2. VALIDATOR-252

Performance improvement of DomainValidator by change the regular expression

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 1.4.0 Release
    • Fix Version/s: 1.4.0 Release
    • Component/s: Routines
    • Labels:
      None
    • Environment:

      Windows 2000 Professional, Pentium4 2.4GHz, RAM:512M, Eclipse 3.3m Junit 3.8.1

      Description

      It seemed to take very long time to match the regular expression when long TLD (consists of around 30-characters over TLD) was specified for DomainValidator, this exponential performance will make it appear that the program has hung.

      The match time improves if it is possible to change DOMAIN_LABEL_REGEX from using

      (?:) to (?>)
      

      as follows.

      DOMAIN_LABEL_REGEX = "\\p{Alnum}(?>[\\p{Alnum}-]*\\p{Alnum})*"
      

      (All unit tests in DomainValidatorTest are succeed even if it changes as shown in the above-mentioned.)

        Activity

        Hide
        Ben Speakmon added a comment -

        Looks right to me. Can you supply a full-fledged patch?

        Show
        Ben Speakmon added a comment - Looks right to me. Can you supply a full-fledged patch?
        Hide
        Makoto Uchino added a comment -

        Patch file for DomainValidator.java for performance improvement.

        Show
        Makoto Uchino added a comment - Patch file for DomainValidator.java for performance improvement.
        Hide
        Ben Speakmon added a comment -

        Patch applied. Thanks!

        $ svn ci -m "VALIDATOR-252: improve regex performance for DomainValidator"
        Sending src/main/java/org/apache/commons/validator/routines/DomainValidator.java
        Transmitting file data .
        Committed revision 600231.

        Show
        Ben Speakmon added a comment - Patch applied. Thanks! $ svn ci -m " VALIDATOR-252 : improve regex performance for DomainValidator" Sending src/main/java/org/apache/commons/validator/routines/DomainValidator.java Transmitting file data . Committed revision 600231.

          People

          • Assignee:
            Ben Speakmon
            Reporter:
            Makoto Uchino
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development