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);
> + }
> }
> }
>
>