← Prev in month
← Prev in thread
Next in thread →
Next in month →
fast or readable ... [Re: [xml-dev] Fast text output from SAX?
Elliotte Rusty Harold wrote: > At 2:48 PM -0700 4/13/04, Dennis Sosnoski wrote: > >> Obviously I can't test every possible internal form that might be >> used by an application. However, the vast majority of XML document >> processing in Java is currently built on the event streams produced >> by SAX parsers. Any general XML format should be convertible to and >> from an event stream of this type, and in practice that's the way any >> alternative general formats are likely to be used (at least in the >> near term). > > That doesn't sound at all plausible to me. If I have a specific > internal data structure that I wish to convert to XML, I would never > go through SAX. If I really didn't care about performance I might go > through XOM or JDOM, but if I cared about performance I'd just dump > out the strings or bytes as seemed appropriate. While certainly a few > people are using the SAX API to drive output, it's hardly a common > thing to do, nor is it at all necessary. I just can't see how the task > you want to benchmark corresponds to how XML is used. > > The fact is XML is deliberately simple enough to be output > straight-forwardly without any fancy libraries. simple enough? i must disagree based on my experience. it may be true for case of writing few tags but not for anything more *especially* if namespaces are involved: try to maintain namespace prefix mappings by hand - in one of SOAP lib i wrote i really _did_ care about performance and streaming and used write() ... and it was real mess and nightmare to maintain/debug. now things no longer matter as for SOAP 1.2 it got easier as i can not do streaming so **I Learned to Stop Worrying and Love the SOAP :)** > I can believe a format like XBIS might be so complex that it really > requires the overhead of a special library just for output. But XML > just isn't that complicated. Unfortunately the massive gains in > programmer productivity from using a straight-forward, text format > that can be inspected and debugged in any text editor are rarely > measured by benchmarks. :-( there is also a whole issue of nice and well formatted XML (elegant?!) versus functional and correct but unreadable (c18n come to mind). here is a simple example - which one is easier to read? this (it could be smaller if it had less of "useless" white spaces): <?xml version='1.0'?><S:Envelope xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:widget='http://widgets.com' xmlns:wsa='http://schemas.xmlsoap.org/ws/2003/03/addressing' xmlns:wsp='http://schemas.xmlsoap.org/ws/2002/12/policy' xmlns:S='http://schemas.xmlsoap.org/soap/envelope/'> <S:Header> <wsa:Action>http://www.ibm.com/xmlns/stdwip/web-services/WS-BrokeredNotification/RegisterPublisherResponse</wsa:Action> <wsa:MessageID>urn:test:1083042837155</wsa:MessageID> <wsa:To>http://schemas.xmlsoap.org/ws/2003/03/addressing/role/anonymous</wsa:To> <wsa:From> <wsa:Address>http://192.168.1.100:17600/notification</wsa:Address> </wsa:From> <wsa:RelatesTo>urn:1083042836764</wsa:RelatesTo> </S:Header> <S:Body> <wsbn:RegisterPublisherResponse xmlns:wsnt='http://www.ibm.com/xmlns/stdwip/web-services/WS-BaseNotification' xmlns:wsbn='http://www.ibm.com/xmlns/stdwip/web-services/WS-BrokeredNotification'> <wsbn:PublisherRegistrationReference> <wsa:Address>http://192.168.1.100:17600/notification</wsa:Address> <wsa:ReferenceProperties> <widget:ResourceID>pub1</widget:ResourceID> </wsa:ReferenceProperties> </wsbn:PublisherRegistrationReference> </wsbn:RegisterPublisherResponse> </S:Body> </S:Envelope> or this (note lot of duplicate namespace declarations ...)? <?xml version=\"1.0\"?><S:Envelope xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:widget=\"http://widgets.com\" xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2003/03/addressing\" xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2002/12/policy\" xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"><S:Header xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"><wsa:Action xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2003/03/addressing\">http://www.ibm.com/xmlns/stdwip/web-services/WS-BrokeredNotification/RegisterPublisherResponse</wsa:Action><wsa:MessageID xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2003/03/addressing\">urn:test:1082429845737</wsa:MessageID><wsa:To xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2003/03/addressing\">http://schemas.xmlsoap.org/ws/2003/03/addressing/role/anonymous</wsa:To><wsa:From xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2003/03/addressing\"><wsa:Address xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2003/03/addressing\">http://192.168.1.100:65390</wsa:Address></wsa:From><wsa:RelatesTo xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2003/03/addressing\">urn:1082429845667</wsa:RelatesTo></S:Header><S:Body xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\"><wsbn:RegisterPublisherResponse xmlns:wsnt=\"http://www.ibm.com/xmlns/stdwip/web-services/WS-BaseNotification\" xmlns:wsbn=\"http://www.ibm.com/xmlns/stdwip/web-services/WS-BrokeredNotification\"><wsnt:PublisherRegistrationReference xmlns:wsnt=\"http://www.ibm.com/xmlns/stdwip/web-services/WS-BaseNotification\"><wsa:Address xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2003/03/addressing\">http://192.168.1.100:65390</wsa:Address><wsa:ReferenceProperties xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2003/03/addressing\"><widget:ResourceID xmlns:widget=\"http://widgets.com\">pub2</widget:ResourceID></wsa:ReferenceProperties></wsnt:PublisherRegistrationReference></wsbn:RegisterPublisherResponse></S:Body></S:Envelope> alek -- The best way to predict the future is to invent it - Alan Kay
← Prev in month
← Prev in thread
Next in thread →
Next in month →