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 2019/03/02 10:57:29 UTC
svn commit: r1854637 -
/jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
Author: pmouawad
Date: Sat Mar 2 10:57:29 2019
New Revision: 1854637
URL: http://svn.apache.org/viewvc?rev=1854637&view=rev
Log:
Replace synchronization by ConcurrentHashMap
Modified:
jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
Modified: jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java?rev=1854637&r1=1854636&r2=1854637&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java Sat Mar 2 10:57:29 2019
@@ -25,9 +25,9 @@ import java.net.URL;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import org.apache.jmeter.assertions.AssertionResult;
@@ -47,7 +47,7 @@ import org.slf4j.LoggerFactory;
*
*/
public class SampleResult implements Serializable, Cloneable, Searchable {
-
+ private static final Byte BYTE = Byte.valueOf((byte)0);
private static final long serialVersionUID = 241L;
// Needs to be accessible from Test code
@@ -213,9 +213,9 @@ public class SampleResult implements Ser
/**
* Files that this sample has been saved in.
* In Non GUI mode and when best config is used, size never exceeds 1,
- * but as a compromise set it to 3
+ * but as a compromise set it to 2
*/
- private final Set<String> files = new HashSet<>(3);
+ private final Map<String, Byte> files = new ConcurrentHashMap<>(2);
// TODO do contentType and/or dataEncoding belong in HTTPSampleResult instead?
private String dataEncoding;// (is this really the character set?) e.g.
@@ -499,8 +499,9 @@ public class SampleResult implements Ser
* @param filename the name of the file
* @return <code>true</code> if the result was previously marked
*/
- public synchronized boolean markFile(String filename) {
- return !files.add(filename);
+ public boolean markFile(String filename) {
+ Byte result = files.putIfAbsent(filename, BYTE);
+ return result != null;
}
public String getResponseCode() {
Re: svn commit: r1854637 - /jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
Posted by Philippe Mouawad <ph...@gmail.com>.
On Saturday, March 2, 2019, Felix Schumacher <
felix.schumacher@internetallee.de> wrote:
>
>
> Am 2. März 2019 11:57:29 MEZ schrieb pmouawad@apache.org:
> >Author: pmouawad
> >Date: Sat Mar 2 10:57:29 2019
> >New Revision: 1854637
> >
> >URL: http://svn.apache.org/viewvc?rev=1854637&view=rev
> >Log:
> >Replace synchronization by ConcurrentHashMap
> >
> >Modified:
> > jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
> >
> >Modified:
> >jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
> >URL:
> >http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/
> apache/jmeter/samplers/SampleResult.java?rev=1854637&
> r1=1854636&r2=1854637&view=diff
> >===========================================================
> ===================
> >--- jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
> >(original)
> >+++ jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
> >Sat Mar 2 10:57:29 2019
> >@@ -25,9 +25,9 @@ import java.net.URL;
> > import java.nio.charset.Charset;
> > import java.nio.charset.StandardCharsets;
> > import java.util.ArrayList;
> >-import java.util.HashSet;
> > import java.util.List;
> >-import java.util.Set;
> >+import java.util.Map;
> >+import java.util.concurrent.ConcurrentHashMap;
> > import java.util.concurrent.TimeUnit;
> >
> > import org.apache.jmeter.assertions.AssertionResult;
> >@@ -47,7 +47,7 @@ import org.slf4j.LoggerFactory;
> > *
> > */
> >public class SampleResult implements Serializable, Cloneable,
> >Searchable {
> >-
> >+ private static final Byte BYTE = Byte.valueOf((byte)0);
>
> I wondered quite a long time, why you introduced a new constant name BYTE.
> I think I would have got the meaning a bit faster, if it would have been
> named DUMMY, MARKER or SOME_VALUE.
Go ahead and change its name.
>
> Do you have any special reason for using Byte instead of a naked Object?
No special reason.
>
> Felix
>
> > private static final long serialVersionUID = 241L;
> >
> > // Needs to be accessible from Test code
> >@@ -213,9 +213,9 @@ public class SampleResult implements Ser
> > /**
> > * Files that this sample has been saved in.
> > * In Non GUI mode and when best config is used, size never exceeds 1,
> >- * but as a compromise set it to 3
> >+ * but as a compromise set it to 2
> > */
> >- private final Set<String> files = new HashSet<>(3);
> >+ private final Map<String, Byte> files = new
> >ConcurrentHashMap<>(2);
> >
> >// TODO do contentType and/or dataEncoding belong in HTTPSampleResult
> >instead?
> >private String dataEncoding;// (is this really the character set?) e.g.
> >@@ -499,8 +499,9 @@ public class SampleResult implements Ser
> > * @param filename the name of the file
> > * @return <code>true</code> if the result was previously marked
> > */
> >- public synchronized boolean markFile(String filename) {
> >- return !files.add(filename);
> >+ public boolean markFile(String filename) {
> >+ Byte result = files.putIfAbsent(filename, BYTE);
> >+ return result != null;
> > }
> >
> > public String getResponseCode() {
>
--
Cordialement.
Philippe Mouawad.
Re: svn commit: r1854637 - /jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
Posted by Felix Schumacher <fe...@internetallee.de>.
Am 2. März 2019 11:57:29 MEZ schrieb pmouawad@apache.org:
>Author: pmouawad
>Date: Sat Mar 2 10:57:29 2019
>New Revision: 1854637
>
>URL: http://svn.apache.org/viewvc?rev=1854637&view=rev
>Log:
>Replace synchronization by ConcurrentHashMap
>
>Modified:
> jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
>
>Modified:
>jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
>URL:
>http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java?rev=1854637&r1=1854636&r2=1854637&view=diff
>==============================================================================
>--- jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
>(original)
>+++ jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
>Sat Mar 2 10:57:29 2019
>@@ -25,9 +25,9 @@ import java.net.URL;
> import java.nio.charset.Charset;
> import java.nio.charset.StandardCharsets;
> import java.util.ArrayList;
>-import java.util.HashSet;
> import java.util.List;
>-import java.util.Set;
>+import java.util.Map;
>+import java.util.concurrent.ConcurrentHashMap;
> import java.util.concurrent.TimeUnit;
>
> import org.apache.jmeter.assertions.AssertionResult;
>@@ -47,7 +47,7 @@ import org.slf4j.LoggerFactory;
> *
> */
>public class SampleResult implements Serializable, Cloneable,
>Searchable {
>-
>+ private static final Byte BYTE = Byte.valueOf((byte)0);
I wondered quite a long time, why you introduced a new constant name BYTE. I think I would have got the meaning a bit faster, if it would have been named DUMMY, MARKER or SOME_VALUE.
Do you have any special reason for using Byte instead of a naked Object?
Felix
> private static final long serialVersionUID = 241L;
>
> // Needs to be accessible from Test code
>@@ -213,9 +213,9 @@ public class SampleResult implements Ser
> /**
> * Files that this sample has been saved in.
> * In Non GUI mode and when best config is used, size never exceeds 1,
>- * but as a compromise set it to 3
>+ * but as a compromise set it to 2
> */
>- private final Set<String> files = new HashSet<>(3);
>+ private final Map<String, Byte> files = new
>ConcurrentHashMap<>(2);
>
>// TODO do contentType and/or dataEncoding belong in HTTPSampleResult
>instead?
>private String dataEncoding;// (is this really the character set?) e.g.
>@@ -499,8 +499,9 @@ public class SampleResult implements Ser
> * @param filename the name of the file
> * @return <code>true</code> if the result was previously marked
> */
>- public synchronized boolean markFile(String filename) {
>- return !files.add(filename);
>+ public boolean markFile(String filename) {
>+ Byte result = files.putIfAbsent(filename, BYTE);
>+ return result != null;
> }
>
> public String getResponseCode() {