[jira] Commented: (XMLBEANS-389) List accessors generated with -javasource=1.5 produce lists that scale poorly with the size of the list

2009-01-15 Thread Philip Aston (JIRA)

[ 
https://issues.apache.org/jira/browse/XMLBEANS-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12664417#action_12664417
 ] 

Philip Aston commented on XMLBEANS-389:
---

Unless I'm missing something, the List accessors aren't documented anywhere. 
Its probably easier to phrase it as an FAQ.

> List accessors generated with -javasource=1.5 produce lists that scale poorly 
> with the size of the list
> ---
>
> Key: XMLBEANS-389
> URL: https://issues.apache.org/jira/browse/XMLBEANS-389
> Project: XMLBeans
>  Issue Type: Bug
>  Components: Compiler
>Affects Versions: Version 2, Version 2.1, Version 2.2, Version 2.2.1,  
> Version 2.3,  Version 2.3.1, Version 2.4 , Version 2.4.1 
>Reporter: Philip Aston
> Attachments: testcase.tgz
>
>
> When a schema is compiled with -javasource=1.5, convenient list based 
> accessors are generated as well as the array accessors. E.g. 
> java.util.List getParamList()
> The implementation of the List is built upon java.lang.AbstractList. The 
> AbstractList iterator's hasNext() method calls size(). For an XMLBean 
> generated list, size() walks the store and so iteration scales quadratically.
> Here are some numbers showing the problem:
>  XMLBeans backed list of 1 strings: 0.013766 ms
>  XMLBeans backed list of 16 strings: 0.255458 ms
>  XMLBeans backed list of 256 strings: 1.612057 ms
>  XMLBeans backed list of 1024 strings: 25.458934 ms
>  XMLBeans backed list of 2048 strings: 123.393447 ms
>  XMLBeans backed list of 4096 strings: 505.594661 ms
>  plain list of 1 strings: 0.002304 ms
>  plain list of 16 strings: 0.007788 ms
>  plain list of 256 strings: 0.013384 ms 
>  plain list of 1024 strings: 0.052215 ms 
>  plain list of 2048 strings: 0.103550 ms
>  plain list of 4096 strings: 0.206648 ms
> I think the generated list should override iterator(), and return an Iterator 
> that calculates the list size once per iteration.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
To unsubscribe, e-mail: dev-unsubscr...@xmlbeans.apache.org
For additional commands, e-mail: dev-h...@xmlbeans.apache.org



[jira] Commented: (XMLBEANS-389) List accessors generated with -javasource=1.5 produce lists that scale poorly with the size of the list

2009-01-15 Thread Philip Aston (JIRA)

[ 
https://issues.apache.org/jira/browse/XMLBEANS-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12664059#action_12664059
 ] 

Philip Aston commented on XMLBEANS-389:
---

Of course. I guess I was really expecting the list accessors to take a snapshot 
like the array accessor. 

Here's a jump start for the doc:


 When a schema is compiled with -javasource=1.5, java.util.List based
 accessors are generated as well as the array accessors. Unlike the
 array accessors, the returned lists are live. Changes to a List are
 reflected in the underlying XMLBean, and changes to the XMLBean are
 reflected in the List.

 This live behavior makes iteration over large lists inefficient. Each
 time an Iterator.hasNext() or Iterator.next() is called, the iterator
 walks over the underlying XMLBean structure. This scales poorly with
 as the size of the list grows, so the list accessors should only be
 used for small sequences.

 To create a non-live list efficiently, avoid the list accessors.
 Instead construct a new java.util.ArrayList around an array returned
 from an array accessor.


> List accessors generated with -javasource=1.5 produce lists that scale poorly 
> with the size of the list
> ---
>
> Key: XMLBEANS-389
> URL: https://issues.apache.org/jira/browse/XMLBEANS-389
> Project: XMLBeans
>  Issue Type: Bug
>  Components: Compiler
>Affects Versions: Version 2, Version 2.1, Version 2.2, Version 2.2.1,  
> Version 2.3,  Version 2.3.1, Version 2.4 , Version 2.4.1 
>Reporter: Philip Aston
> Attachments: testcase.tgz
>
>
> When a schema is compiled with -javasource=1.5, convenient list based 
> accessors are generated as well as the array accessors. E.g. 
> java.util.List getParamList()
> The implementation of the List is built upon java.lang.AbstractList. The 
> AbstractList iterator's hasNext() method calls size(). For an XMLBean 
> generated list, size() walks the store and so iteration scales quadratically.
> Here are some numbers showing the problem:
>  XMLBeans backed list of 1 strings: 0.013766 ms
>  XMLBeans backed list of 16 strings: 0.255458 ms
>  XMLBeans backed list of 256 strings: 1.612057 ms
>  XMLBeans backed list of 1024 strings: 25.458934 ms
>  XMLBeans backed list of 2048 strings: 123.393447 ms
>  XMLBeans backed list of 4096 strings: 505.594661 ms
>  plain list of 1 strings: 0.002304 ms
>  plain list of 16 strings: 0.007788 ms
>  plain list of 256 strings: 0.013384 ms 
>  plain list of 1024 strings: 0.052215 ms 
>  plain list of 2048 strings: 0.103550 ms
>  plain list of 4096 strings: 0.206648 ms
> I think the generated list should override iterator(), and return an Iterator 
> that calculates the list size once per iteration.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
To unsubscribe, e-mail: dev-unsubscr...@xmlbeans.apache.org
For additional commands, e-mail: dev-h...@xmlbeans.apache.org



[jira] Commented: (XMLBEANS-389) List accessors generated with -javasource=1.5 produce lists that scale poorly with the size of the list

2009-01-14 Thread Philip Aston (JIRA)

[ 
https://issues.apache.org/jira/browse/XMLBEANS-389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12663707#action_12663707
 ] 

Philip Aston commented on XMLBEANS-389:
---

Thanks Radu.

I may be missing something for the first issue. Why can't you use the 
AbstactList.modCount to implement a fail fast iterator?

The second issue is the killer of course. Could the iterator use an XmlCursor?

If nothing can be done, I suggest the FAQ is updated to warn that the List 
accessors should not be used for large arrays.

> List accessors generated with -javasource=1.5 produce lists that scale poorly 
> with the size of the list
> ---
>
> Key: XMLBEANS-389
> URL: https://issues.apache.org/jira/browse/XMLBEANS-389
> Project: XMLBeans
>  Issue Type: Bug
>  Components: Compiler
>Affects Versions: Version 2, Version 2.1, Version 2.2, Version 2.2.1,  
> Version 2.3,  Version 2.3.1, Version 2.4 , Version 2.4.1 
>Reporter: Philip Aston
> Attachments: testcase.tgz
>
>
> When a schema is compiled with -javasource=1.5, convenient list based 
> accessors are generated as well as the array accessors. E.g. 
> java.util.List getParamList()
> The implementation of the List is built upon java.lang.AbstractList. The 
> AbstractList iterator's hasNext() method calls size(). For an XMLBean 
> generated list, size() walks the store and so iteration scales quadratically.
> Here are some numbers showing the problem:
>  XMLBeans backed list of 1 strings: 0.013766 ms
>  XMLBeans backed list of 16 strings: 0.255458 ms
>  XMLBeans backed list of 256 strings: 1.612057 ms
>  XMLBeans backed list of 1024 strings: 25.458934 ms
>  XMLBeans backed list of 2048 strings: 123.393447 ms
>  XMLBeans backed list of 4096 strings: 505.594661 ms
>  plain list of 1 strings: 0.002304 ms
>  plain list of 16 strings: 0.007788 ms
>  plain list of 256 strings: 0.013384 ms 
>  plain list of 1024 strings: 0.052215 ms 
>  plain list of 2048 strings: 0.103550 ms
>  plain list of 4096 strings: 0.206648 ms
> I think the generated list should override iterator(), and return an Iterator 
> that calculates the list size once per iteration.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
To unsubscribe, e-mail: dev-unsubscr...@xmlbeans.apache.org
For additional commands, e-mail: dev-h...@xmlbeans.apache.org



[jira] Updated: (XMLBEANS-389) List accessors generated with -javasource=1.5 produce lists that scale poorly with the size of the list

2008-11-13 Thread Philip Aston (JIRA)

 [ 
https://issues.apache.org/jira/browse/XMLBEANS-389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Philip Aston updated XMLBEANS-389:
--

Attachment: testcase.tgz

Test case.

> List accessors generated with -javasource=1.5 produce lists that scale poorly 
> with the size of the list
> ---
>
> Key: XMLBEANS-389
> URL: https://issues.apache.org/jira/browse/XMLBEANS-389
> Project: XMLBeans
>  Issue Type: Bug
>  Components: Compiler
>Affects Versions: Version 2, Version 2.1, Version 2.2, Version 2.2.1,  
> Version 2.3,  Version 2.3.1, Version 2.4 , Version 2.4.1 
>Reporter: Philip Aston
> Attachments: testcase.tgz
>
>
> When a schema is compiled with -javasource=1.5, convenient list based 
> accessors are generated as well as the array accessors. E.g. 
> java.util.List getParamList()
> The implementation of the List is built upon java.lang.AbstractList. The 
> AbstractList iterator's hasNext() method calls size(). For an XMLBean 
> generated list, size() walks the store and so iteration scales quadratically.
> Here are some numbers showing the problem:
>  XMLBeans backed list of 1 strings: 0.013766 ms
>  XMLBeans backed list of 16 strings: 0.255458 ms
>  XMLBeans backed list of 256 strings: 1.612057 ms
>  XMLBeans backed list of 1024 strings: 25.458934 ms
>  XMLBeans backed list of 2048 strings: 123.393447 ms
>  XMLBeans backed list of 4096 strings: 505.594661 ms
>  plain list of 1 strings: 0.002304 ms
>  plain list of 16 strings: 0.007788 ms
>  plain list of 256 strings: 0.013384 ms 
>  plain list of 1024 strings: 0.052215 ms 
>  plain list of 2048 strings: 0.103550 ms
>  plain list of 4096 strings: 0.206648 ms
> I think the generated list should override iterator(), and return an Iterator 
> that calculates the list size once per iteration.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



[jira] Created: (XMLBEANS-389) List accessors generated with -javasource=1.5 produce lists that scale poorly with the size of the list

2008-11-13 Thread Philip Aston (JIRA)
List accessors generated with -javasource=1.5 produce lists that scale poorly 
with the size of the list
---

 Key: XMLBEANS-389
 URL: https://issues.apache.org/jira/browse/XMLBEANS-389
 Project: XMLBeans
  Issue Type: Bug
  Components: Compiler
Affects Versions: Version 2, Version 2.1, Version 2.2, Version 2.2.1,  
Version 2.3,  Version 2.3.1, Version 2.4 , Version 2.4.1 
Reporter: Philip Aston


When a schema is compiled with -javasource=1.5, convenient list based accessors 
are generated as well as the array accessors. E.g. 

java.util.List getParamList()

The implementation of the List is built upon java.lang.AbstractList. The 
AbstractList iterator's hasNext() method calls size(). For an XMLBean generated 
list, size() walks the store and so iteration scales quadratically.

Here are some numbers showing the problem:

 XMLBeans backed list of 1 strings: 0.013766 ms
 XMLBeans backed list of 16 strings: 0.255458 ms
 XMLBeans backed list of 256 strings: 1.612057 ms
 XMLBeans backed list of 1024 strings: 25.458934 ms
 XMLBeans backed list of 2048 strings: 123.393447 ms
 XMLBeans backed list of 4096 strings: 505.594661 ms
 plain list of 1 strings: 0.002304 ms
 plain list of 16 strings: 0.007788 ms
 plain list of 256 strings: 0.013384 ms 
 plain list of 1024 strings: 0.052215 ms 
 plain list of 2048 strings: 0.103550 ms
 plain list of 4096 strings: 0.206648 ms

I think the generated list should override iterator(), and return an Iterator 
that calculates the list size once per iteration.




-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]