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]