Author: fanningpj
Date: Wed Jul 16 20:28:17 2025
New Revision: 1927274

URL: http://svn.apache.org/viewvc?rev=1927274&view=rev
Log:
[XMLBeans-483] further perf optimisation in array setter

Modified:
    
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/XmlComplexContentImpl.java

Modified: 
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/XmlComplexContentImpl.java
URL: 
http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/XmlComplexContentImpl.java?rev=1927274&r1=1927273&r2=1927274&view=diff
==============================================================================
--- 
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/XmlComplexContentImpl.java
 (original)
+++ 
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/values/XmlComplexContentImpl.java
 Wed Jul 16 20:28:17 2025
@@ -407,19 +407,20 @@ public class XmlComplexContentImpl exten
             m = startPos;
         }
 
-        int j;
-        for (i = startSrc, j = startDest; i < n; i++, j++) {
-            TypeStoreUser user;
-
-            if (j >= m) {
-                user = store.add_element_user(elemName);
-            } else if (set == null) {
-                user = store.find_element_user(elemName, j);
-            } else {
-                user = store.find_element_user(set, j);
-            }
+        final int size = Math.min(m - startDest, sources.length - startSrc);
+        ArrayList<XmlObjectBase> users = new ArrayList<>(size);
+        if (set == null) {
+            store.find_multiple_element_users(elemName, users, size);
+        } else {
+            store.find_multiple_element_users(set, users, size);
+        }
+        i = startSrc;
+        for (XmlObjectBase user : users) {
+            user.set(sources[i++]);
+        }
 
-            ((XmlObjectBase) user).set(sources[i]);
+        for (TypeStoreUser u : store.add_elements_users(elemName, n - i)) {
+            ((XmlObjectBase) u).set(sources[i++]);
         }
 
         // We can't just delegate to array_setter because we need



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to