[ 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<java.lang.String> 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]