[ 
https://issues.apache.org/jira/browse/OLINGO-937?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15248573#comment-15248573
 ] 

Michael Bolz commented on OLINGO-937:
-------------------------------------

Hi [~baylej],

Thanks for finding this improvement.
I also found a [article about 
this|http://www.cowtowncoder.com/blog/archives/2006/06/entry_2.html] which is a 
little bit older, however surely still correct   ;o)

Based on your suggestion I moved the {{Xml*Factory}} creation into the 
{{XmlHelper}} and cached the factory instances.
It would be nice if you could take a look into the related [feature branch: 
OLINGO-937_XmlFactoryImprovement|https://git1-us-west.apache.org/repos/asf?p=olingo-odata2.git;a=shortlog;h=refs/heads/OLINGO-937_XmlFactoryImprovement]
 and give feedback.

Best Regards, Michael 

> Avoid call to ServiceLoader on each request
> -------------------------------------------
>
>                 Key: OLINGO-937
>                 URL: https://issues.apache.org/jira/browse/OLINGO-937
>             Project: Olingo
>          Issue Type: Improvement
>          Components: odata2-core
>    Affects Versions: V2 2.0.6
>            Reporter: Jonathan Bayle
>            Assignee: Michael Bolz
>              Labels: performance, xml
>
> Dear Olingo developers,
> New instances of XMLInputFactory, Transformer and XMLStreamWriter are created 
> on each request that parses/produces XML documents.
> These instances are obtained through the ServiceLoader class, which is known 
> for being slow.
> See:
> !http://i.imgur.com/O1aBUPR.png!
> These objects could be instanciated only once and stored as static class 
> fields.
> {noformat}
> odata-core/src/main/java/org/apache/olingo/odata2/core/commons/XmlHelper.java
> 41:      XMLInputFactory factory = XMLInputFactory.newInstance();
> odata-core/src/main/java/org/apache/olingo/odata2/core/debug/DebugInfoBody.java
> 120:      Transformer transformer = 
> TransformerFactory.newInstance().newTransformer();
> odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmServiceMetadataImplProv.java
> 75:      XMLStreamWriter xmlStreamWriter = 
> XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> odata-core/src/main/java/org/apache/olingo/odata2/core/ep/AtomEntityProvider.java
> 110:      XMLStreamWriter writer = 
> XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, 
> DEFAULT_CHARSET);
> 165:      XMLStreamWriter writer = 
> XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, 
> DEFAULT_CHARSET);
> 201:      XMLStreamWriter writer = 
> XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, 
> DEFAULT_CHARSET);
> 228:      XMLStreamWriter writer = 
> XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, 
> DEFAULT_CHARSET);
> 257:      XMLStreamWriter writer = 
> XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, 
> DEFAULT_CHARSET);
> 286:      XMLStreamWriter writer = 
> XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, 
> DEFAULT_CHARSET);
> 313:      XMLStreamWriter writer = 
> XMLOutputFactory.newInstance().createXMLStreamWriter(outStream, 
> DEFAULT_CHARSET);
> odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java
> 245:      XMLStreamWriter xmlStreamWriter = 
> XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomServiceDocumentProducer.java
> 60:      XMLStreamWriter xmlStreamWriter = 
> XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
> {noformat}
> Thanks,
> John.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to