You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2013/03/02 20:45:22 UTC

svn commit: r1451926 - /jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java

Author: pmouawad
Date: Sat Mar  2 19:45:22 2013
New Revision: 1451926

URL: http://svn.apache.org/r1451926
Log:
Bug 54268 - Improve CPU and memory usage
Bugzilla Id: 54268

Modified:
    jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java

Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java?rev=1451926&r1=1451925&r2=1451926&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java (original)
+++ jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java Sat Mar  2 19:45:22 2013
@@ -27,11 +27,6 @@ import org.apache.jmeter.protocol.http.u
 import org.apache.jmeter.util.JMeterUtils;
 import org.apache.jorphan.logging.LoggingManager;
 import org.apache.log.Logger;
-
-// NOTE: Also looked at using Java 1.4 regexp instead of ORO. The change was
-// trivial. Performance did not improve -- at least not significantly.
-// Finally decided for ORO following advise from Stefan Bodewig (message
-// to jmeter-dev dated 25 Nov 2003 8:52 CET) [Jordi]
 import org.apache.oro.text.MalformedCachePatternException;
 import org.apache.oro.text.regex.MatchResult;
 import org.apache.oro.text.regex.Pattern;
@@ -146,15 +141,16 @@ class RegexpHTMLParser extends HTMLParse
      */
     @Override
     public Iterator<URL> getEmbeddedResourceURLs(byte[] html, URL baseUrl, URLCollection urls, String encoding) throws HTMLParseException {
-
+        Pattern pattern= null;
+        Perl5Matcher matcher = null;
         try {
-			Perl5Matcher matcher = JMeterUtils.getMatcher();
+            matcher = JMeterUtils.getMatcher();
 			PatternMatcherInput input = localInput.get();
 			// TODO: find a way to avoid the cost of creating a String here --
 			// probably a new PatternMatcherInput working on a byte[] would do
 			// better.
 			input.setInput(new String(html, encoding)); 
-			Pattern pattern=JMeterUtils.getPatternCache().getPattern(
+			pattern=JMeterUtils.getPatternCache().getPattern(
 			        REGEXP,
 			        Perl5Compiler.CASE_INSENSITIVE_MASK
 			        | Perl5Compiler.SINGLELINE_MASK
@@ -199,6 +195,8 @@ class RegexpHTMLParser extends HTMLParse
 			throw new HTMLParseException(e.getMessage(), e);
 		} catch (MalformedCachePatternException e) {
 			throw new HTMLParseException(e.getMessage(), e);
-		}
+		} finally {
+            JMeterUtils.clearMatcherMemory(matcher, pattern);
+        }
     }
 }



Re: svn commit: r1451926 - /jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java

Posted by sebb <se...@gmail.com>.
OK, thanks!

On 3 March 2013 19:32, Philippe Mouawad <ph...@gmail.com> wrote:
> It was a mistake, not done on purpose.
> Fixed
>
> On Sun, Mar 3, 2013 at 4:05 PM, sebb <se...@gmail.com> wrote:
>
>> On 2 March 2013 19:45,  <pm...@apache.org> wrote:
>> > Author: pmouawad
>> > Date: Sat Mar  2 19:45:22 2013
>> > New Revision: 1451926
>> >
>> > URL: http://svn.apache.org/r1451926
>> > Log:
>> > Bug 54268 - Improve CPU and memory usage
>> > Bugzilla Id: 54268
>> >
>> > Modified:
>> >
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java
>> >
>> > Modified:
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java
>> > URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java?rev=1451926&r1=1451925&r2=1451926&view=diff
>> >
>> ==============================================================================
>> > ---
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java
>> (original)
>> > +++
>> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java
>> Sat Mar  2 19:45:22 2013
>> > @@ -27,11 +27,6 @@ import org.apache.jmeter.protocol.http.u
>> >  import org.apache.jmeter.util.JMeterUtils;
>> >  import org.apache.jorphan.logging.LoggingManager;
>> >  import org.apache.log.Logger;
>> > -
>> > -// NOTE: Also looked at using Java 1.4 regexp instead of ORO. The
>> change was
>> > -// trivial. Performance did not improve -- at least not significantly.
>> > -// Finally decided for ORO following advise from Stefan Bodewig (message
>> > -// to jmeter-dev dated 25 Nov 2003 8:52 CET) [Jordi]
>>
>> Why did you remove the comments?
>> I think they are still potentially useful (and they don't affect
>> performance!).
>>
>> Please re-instate.
>>
>> >  import org.apache.oro.text.MalformedCachePatternException;
>> >  import org.apache.oro.text.regex.MatchResult;
>> >  import org.apache.oro.text.regex.Pattern;
>> > @@ -146,15 +141,16 @@ class RegexpHTMLParser extends HTMLParse
>> >       */
>> >      @Override
>> >      public Iterator<URL> getEmbeddedResourceURLs(byte[] html, URL
>> baseUrl, URLCollection urls, String encoding) throws HTMLParseException {
>> > -
>> > +        Pattern pattern= null;
>> > +        Perl5Matcher matcher = null;
>> >          try {
>> > -                       Perl5Matcher matcher = JMeterUtils.getMatcher();
>> > +            matcher = JMeterUtils.getMatcher();
>> >                         PatternMatcherInput input = localInput.get();
>> >                         // TODO: find a way to avoid the cost of
>> creating a String here --
>> >                         // probably a new PatternMatcherInput working on
>> a byte[] would do
>> >                         // better.
>> >                         input.setInput(new String(html, encoding));
>> > -                       Pattern
>> pattern=JMeterUtils.getPatternCache().getPattern(
>> > +                       pattern=JMeterUtils.getPatternCache().getPattern(
>> >                                 REGEXP,
>> >                                 Perl5Compiler.CASE_INSENSITIVE_MASK
>> >                                 | Perl5Compiler.SINGLELINE_MASK
>> > @@ -199,6 +195,8 @@ class RegexpHTMLParser extends HTMLParse
>> >                         throw new HTMLParseException(e.getMessage(), e);
>> >                 } catch (MalformedCachePatternException e) {
>> >                         throw new HTMLParseException(e.getMessage(), e);
>> > -               }
>> > +               } finally {
>> > +            JMeterUtils.clearMatcherMemory(matcher, pattern);
>> > +        }
>> >      }
>> >  }
>> >
>> >
>>
>
>
>
> --
> Cordialement.
> Philippe Mouawad.

Re: svn commit: r1451926 - /jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java

Posted by Philippe Mouawad <ph...@gmail.com>.
It was a mistake, not done on purpose.
Fixed

On Sun, Mar 3, 2013 at 4:05 PM, sebb <se...@gmail.com> wrote:

> On 2 March 2013 19:45,  <pm...@apache.org> wrote:
> > Author: pmouawad
> > Date: Sat Mar  2 19:45:22 2013
> > New Revision: 1451926
> >
> > URL: http://svn.apache.org/r1451926
> > Log:
> > Bug 54268 - Improve CPU and memory usage
> > Bugzilla Id: 54268
> >
> > Modified:
> >
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java
> >
> > Modified:
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java
> > URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java?rev=1451926&r1=1451925&r2=1451926&view=diff
> >
> ==============================================================================
> > ---
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java
> (original)
> > +++
> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java
> Sat Mar  2 19:45:22 2013
> > @@ -27,11 +27,6 @@ import org.apache.jmeter.protocol.http.u
> >  import org.apache.jmeter.util.JMeterUtils;
> >  import org.apache.jorphan.logging.LoggingManager;
> >  import org.apache.log.Logger;
> > -
> > -// NOTE: Also looked at using Java 1.4 regexp instead of ORO. The
> change was
> > -// trivial. Performance did not improve -- at least not significantly.
> > -// Finally decided for ORO following advise from Stefan Bodewig (message
> > -// to jmeter-dev dated 25 Nov 2003 8:52 CET) [Jordi]
>
> Why did you remove the comments?
> I think they are still potentially useful (and they don't affect
> performance!).
>
> Please re-instate.
>
> >  import org.apache.oro.text.MalformedCachePatternException;
> >  import org.apache.oro.text.regex.MatchResult;
> >  import org.apache.oro.text.regex.Pattern;
> > @@ -146,15 +141,16 @@ class RegexpHTMLParser extends HTMLParse
> >       */
> >      @Override
> >      public Iterator<URL> getEmbeddedResourceURLs(byte[] html, URL
> baseUrl, URLCollection urls, String encoding) throws HTMLParseException {
> > -
> > +        Pattern pattern= null;
> > +        Perl5Matcher matcher = null;
> >          try {
> > -                       Perl5Matcher matcher = JMeterUtils.getMatcher();
> > +            matcher = JMeterUtils.getMatcher();
> >                         PatternMatcherInput input = localInput.get();
> >                         // TODO: find a way to avoid the cost of
> creating a String here --
> >                         // probably a new PatternMatcherInput working on
> a byte[] would do
> >                         // better.
> >                         input.setInput(new String(html, encoding));
> > -                       Pattern
> pattern=JMeterUtils.getPatternCache().getPattern(
> > +                       pattern=JMeterUtils.getPatternCache().getPattern(
> >                                 REGEXP,
> >                                 Perl5Compiler.CASE_INSENSITIVE_MASK
> >                                 | Perl5Compiler.SINGLELINE_MASK
> > @@ -199,6 +195,8 @@ class RegexpHTMLParser extends HTMLParse
> >                         throw new HTMLParseException(e.getMessage(), e);
> >                 } catch (MalformedCachePatternException e) {
> >                         throw new HTMLParseException(e.getMessage(), e);
> > -               }
> > +               } finally {
> > +            JMeterUtils.clearMatcherMemory(matcher, pattern);
> > +        }
> >      }
> >  }
> >
> >
>



-- 
Cordialement.
Philippe Mouawad.

Re: svn commit: r1451926 - /jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java

Posted by sebb <se...@gmail.com>.
On 2 March 2013 19:45,  <pm...@apache.org> wrote:
> Author: pmouawad
> Date: Sat Mar  2 19:45:22 2013
> New Revision: 1451926
>
> URL: http://svn.apache.org/r1451926
> Log:
> Bug 54268 - Improve CPU and memory usage
> Bugzilla Id: 54268
>
> Modified:
>     jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java
>
> Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java
> URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java?rev=1451926&r1=1451925&r2=1451926&view=diff
> ==============================================================================
> --- jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java (original)
> +++ jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java Sat Mar  2 19:45:22 2013
> @@ -27,11 +27,6 @@ import org.apache.jmeter.protocol.http.u
>  import org.apache.jmeter.util.JMeterUtils;
>  import org.apache.jorphan.logging.LoggingManager;
>  import org.apache.log.Logger;
> -
> -// NOTE: Also looked at using Java 1.4 regexp instead of ORO. The change was
> -// trivial. Performance did not improve -- at least not significantly.
> -// Finally decided for ORO following advise from Stefan Bodewig (message
> -// to jmeter-dev dated 25 Nov 2003 8:52 CET) [Jordi]

Why did you remove the comments?
I think they are still potentially useful (and they don't affect performance!).

Please re-instate.

>  import org.apache.oro.text.MalformedCachePatternException;
>  import org.apache.oro.text.regex.MatchResult;
>  import org.apache.oro.text.regex.Pattern;
> @@ -146,15 +141,16 @@ class RegexpHTMLParser extends HTMLParse
>       */
>      @Override
>      public Iterator<URL> getEmbeddedResourceURLs(byte[] html, URL baseUrl, URLCollection urls, String encoding) throws HTMLParseException {
> -
> +        Pattern pattern= null;
> +        Perl5Matcher matcher = null;
>          try {
> -                       Perl5Matcher matcher = JMeterUtils.getMatcher();
> +            matcher = JMeterUtils.getMatcher();
>                         PatternMatcherInput input = localInput.get();
>                         // TODO: find a way to avoid the cost of creating a String here --
>                         // probably a new PatternMatcherInput working on a byte[] would do
>                         // better.
>                         input.setInput(new String(html, encoding));
> -                       Pattern pattern=JMeterUtils.getPatternCache().getPattern(
> +                       pattern=JMeterUtils.getPatternCache().getPattern(
>                                 REGEXP,
>                                 Perl5Compiler.CASE_INSENSITIVE_MASK
>                                 | Perl5Compiler.SINGLELINE_MASK
> @@ -199,6 +195,8 @@ class RegexpHTMLParser extends HTMLParse
>                         throw new HTMLParseException(e.getMessage(), e);
>                 } catch (MalformedCachePatternException e) {
>                         throw new HTMLParseException(e.getMessage(), e);
> -               }
> +               } finally {
> +            JMeterUtils.clearMatcherMemory(matcher, pattern);
> +        }
>      }
>  }
>
>