You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by "Chris Simmons (Updated) (JIRA)" <xe...@xml.apache.org> on 2012/01/24 15:45:46 UTC

[jira] [Updated] (XERCESJ-970) Large comments are extremely slow to parse

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

Chris Simmons updated XERCESJ-970:
----------------------------------

    Attachment: comments.txt

Actually the buffer doesn't double in size when you append a char array, it grows linearly.  This char array method is what's used when parsing comments.

The attached patch includes a test harness and fix.

On my box without the fix it takes over 8 seconds to parse a large comment, with the fix 1/8 second.

We have a real life example where a client commented out 40k lines of XML with a similar resulting performance hit.
                
> Large comments are extremely slow to parse
> ------------------------------------------
>
>                 Key: XERCESJ-970
>                 URL: https://issues.apache.org/jira/browse/XERCESJ-970
>             Project: Xerces2-J
>          Issue Type: Bug
>          Components: XNI
>    Affects Versions: 2.2.0, 2.2.1, 2.3.0, 2.4.0, 2.5.0, 2.6.0, 2.6.1, 2.6.2
>         Environment: Windows XP running Java 1.4.2
>            Reporter: Sean Griffin
>            Priority: Minor
>         Attachments: comments.txt
>
>
> Very large comments drastically increase the parsing time for both SAX and DOM implementations.  Running the sax.Counter and dom.Counter samples with a 410KB file where the entire thing is uncommented results in parse times in the 100ms to 300ms range.  However, if I comment out 95% of the file and run the same samples the parse times jump to between 40 and 50 seconds.  I ran the same samples using the Aelfred parser shipped with Saxon 7.9 and, while the file with the large comment was slower than without the comment, it jumped by only 100ms or so.
> I briefly compared the code between the two parsers, and they don't look significantly different when it comes to handling comments.  The only main difference I noticed was around low/high byte character checks.  I suspect it is an inefficiency in the XMLStringBuffer class, but I'm not seeing anything.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: j-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: j-dev-help@xerces.apache.org