This is an automated email from the ASF dual-hosted git repository.

vladimirsitnikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git


The following commit(s) were added to refs/heads/master by this push:
     new 9793459774 perf: add PropertyIteratorImpl.EMPTY_ITERATOR when 
iterating over an empty collection
9793459774 is described below

commit 9793459774fcdc4e0d69c05349a6e9a46edc6de8
Author: Vladimir Sitnikov <[email protected]>
AuthorDate: Wed Jun 14 13:31:46 2023 +0300

    perf: add PropertyIteratorImpl.EMPTY_ITERATOR when iterating over an empty 
collection
---
 .../main/java/org/apache/jmeter/testelement/AbstractTestElement.java   | 3 +++
 .../java/org/apache/jmeter/testelement/property/AbstractProperty.java  | 3 +++
 .../org/apache/jmeter/testelement/property/PropertyIteratorImpl.java   | 2 ++
 3 files changed, 8 insertions(+)

diff --git 
a/src/core/src/main/java/org/apache/jmeter/testelement/AbstractTestElement.java 
b/src/core/src/main/java/org/apache/jmeter/testelement/AbstractTestElement.java
index 6bbf3bad48..2361b26fea 100644
--- 
a/src/core/src/main/java/org/apache/jmeter/testelement/AbstractTestElement.java
+++ 
b/src/core/src/main/java/org/apache/jmeter/testelement/AbstractTestElement.java
@@ -589,6 +589,9 @@ public abstract class AbstractTestElement implements 
TestElement, Serializable,
         // Note: can't use ConcurrentMap here as it would return elements in 
unpredictable order
         readLock();
         try {
+            if (propMap.isEmpty()) {
+                return PropertyIteratorImpl.EMPTY_ITERATOR;
+            }
             // TODO: copy the contents of the iterator to avoid 
ConcurrentModificationException?
             return new PropertyIteratorImpl(this, propMap.values());
         } finally {
diff --git 
a/src/core/src/main/java/org/apache/jmeter/testelement/property/AbstractProperty.java
 
b/src/core/src/main/java/org/apache/jmeter/testelement/property/AbstractProperty.java
index 37fc659d81..0b0ff4ef6c 100644
--- 
a/src/core/src/main/java/org/apache/jmeter/testelement/property/AbstractProperty.java
+++ 
b/src/core/src/main/java/org/apache/jmeter/testelement/property/AbstractProperty.java
@@ -77,6 +77,9 @@ public abstract class AbstractProperty implements 
JMeterProperty {
     }
 
     protected PropertyIterator getIterator(Collection<JMeterProperty> values) {
+        if (values.isEmpty()) {
+            return PropertyIteratorImpl.EMPTY_ITERATOR;
+        }
         return new PropertyIteratorImpl(values);
     }
 
diff --git 
a/src/core/src/main/java/org/apache/jmeter/testelement/property/PropertyIteratorImpl.java
 
b/src/core/src/main/java/org/apache/jmeter/testelement/property/PropertyIteratorImpl.java
index 6f54e598b9..ca043f5f9b 100644
--- 
a/src/core/src/main/java/org/apache/jmeter/testelement/property/PropertyIteratorImpl.java
+++ 
b/src/core/src/main/java/org/apache/jmeter/testelement/property/PropertyIteratorImpl.java
@@ -18,11 +18,13 @@
 package org.apache.jmeter.testelement.property;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Iterator;
 
 import org.apache.jmeter.testelement.TestElement;
 
 public class PropertyIteratorImpl implements PropertyIterator {
+    public static final PropertyIterator EMPTY_ITERATOR = new 
PropertyIteratorImpl(Collections.emptyList());
 
     private final TestElement owner;
     private final Iterator<? extends JMeterProperty> iter;

Reply via email to