Rich Scheuerle XML & Web Services Development 512-838-5115 (IBM TL 678-5115) ----- Forwarded by R J Scheuerle Jr/Austin/IBM on 02/21/2002 01:26 PM -----
R J Scheuerle Jr To: [EMAIL PROTECTED] 02/21/2002 11:08 cc: "'[EMAIL PROTECTED]'" <[EMAIL PROTECTED]> AM From: R J Scheuerle Jr/Austin/IBM@IBMUS Subject: Re: Experiments on type serialization. (feedback very welcome) Taras, I looked at the code and I am not sure that this an appropriate time to make "performance optimization" changes. I agree that Axis could be improved, but moving the deserialization type determination into BodyBuilder seems to break some well defined logical boundaries. (Plus as you pointed out, some of the tests fail when your changes are enabled.) Perhaps someone (not me) who is more knowledgeable of the SOAPElement construction could address your concerns about the large number of temporary objects constructed by Axis. Perhaps some of these objects could be pooled. If you would like to examine the ramifications of pooling some of the objects versus moving logical function, that would be a great help to the group. Thanks, Rich Scheuerle XML & Web Services Development 512-838-5115 (IBM TL 678-5115) Taras Shkvarchuk <tarass@grandcent To: "'[EMAIL PROTECTED]'" <[EMAIL PROTECTED]> ral.com> cc: Subject: Experiments on type serialization. (feedback very welcome) 02/15/2002 07:32 AM Please respond to axis-dev Right now AXIS is always building a DOM like structure from MessageElement object. On top of that all SAX events are recorded for type deserialization. This leads to one memory hungry application. I was running some tests to serialize a Map of Strings (using my own deserializer for testing purposes). On a 6MB XML sample with 55618 map nodes, AXIS took 67.66MB of ram, and ran for 8.7sec on a PIII-850. On a 1MB body with 10618 nodes, AXIS took 13.6MB, and ran for 2.3 sec. This is raw parser time not including transport, etc... whole transaction is attached at the end of the message. What I was playing with was direct serialization into types, and also ability to turn off SAX recording. With my patches I was able to serialize 6MB message using only 10.0MB in 5.52sec And with SAX recoding 31.5MB was used in 6.65 sec. There maybe not such a dramatic speed improvement, but memory utilization is much better. Java's garbage collector will be happy :) My changes passed functional tests partially (dies on the one with phasers). So there is some more debugging for me to do, but the idea seems to be functional. you can control it from MessageContext by calling: msgContext.setResolveTypes(true); msgContext.setRecordingEvents(false); I will attach the complete source of the changes files, if anyone feels like looking at what ever part of it is working. Bellow is a breakdown of 2 tests. in this tests there was 1 text/plain attachment with contents of "ATTACHMENT DATA" Data was not read out of them, just counted number of attachments present. **************************************************** 6MB original: [PERFLOG] START - used 0.0 KB in 0.0 sec [PERFLOG] Req Ready - used 713.1328125 KB in 1.432 sec [PERFLOG] Invoked - used 21.133033752441406 MB in 2.414 sec Attchment count:1 [PERFLOG] AttachExtracted - used 0.9609375 KB in 0.0 sec ResolveTypes:false Record Events:true [PERFLOG] Extracted ENV - used 38.475128173828125 MB in 5.157 sec [PERFLOG] Have Node - used 0.8359375 KB in 0.0 sec Total elements in list:55618 [PERFLOG] Finished - used 29.194740295410156 MB in 3.565 sec [PERFLOG] TOTAL - used 89.50175476074219 MB in 12.568 sec **************************************************** 1MB original: [PERFLOG] START - used 0.0 KB in 0.0 sec [PERFLOG] Req Ready - used 1.3937301635742188 MB in 1.432 sec [PERFLOG] Invoked - used 673.7265625 KB in 3.405 sec Attchment count:1 [PERFLOG] AttachExtracted - used 0.8828125 KB in 0.0 sec ResolveTypes:false Record Events:true [PERFLOG] Extracted ENV - used 6.904670715332031 MB in 1.573 sec I am of type:null [PERFLOG] Have Node - used 0.828125 KB in 0.0 sec Total elements in list:10618 [PERFLOG] Finished - used 6.6721954345703125 MB in 0.771 sec [PERFLOG] TOTAL - used 15.630882263183594 MB in 7.181 sec **************************************************** 6MB direct serialization w/o SAX recoding: [PERFLOG] START - used 0.0 KB in 0.0 sec [PERFLOG] Req Ready - used 713.1328125 KB in 1.402 sec [PERFLOG] Invoked - used 21.133033752441406 MB in 2.374 sec Attchment count:1 [PERFLOG] AttachExtracted - used 0.9609375 KB in 0.0 sec ResolveTypes:true Record Events:false [PERFLOG] Extracted ENV - used 10.00848388671875 MB in 5.528 sec [PERFLOG] Have Node - used 0.828125 KB in 0.0 sec Total elements in list:55618 [PERFLOG] Finished - used 0.796875 KB in 0.0 sec [PERFLOG] TOTAL - used 31.84105682373047 MB in 9.384 sec **************************************************** 6MB direct serialization with SAX recoding: [PERFLOG] START - used 0.0 KB in 0.0 sec [PERFLOG] Req Ready - used 713.1328125 KB in 1.582 sec [PERFLOG] Invoked - used 21.133033752441406 MB in 2.403 sec Attchment count:1 [PERFLOG] AttachExtracted - used 0.9609375 KB in 0.0 sec ResolveTypes:true Record Events:true [PERFLOG] Extracted ENV - used 31.537750244140625 MB in 6.65 sec [PERFLOG] Have Node - used 0.8359375 KB in 0.0 sec Total elements in list:55618 [PERFLOG] Finished - used 0.796875 KB in 0.0 sec [PERFLOG] TOTAL - used 53.370330810546875 MB in 10.705 sec **** Attachment BodyBuilder.java has been removed from this note on 21 February 2002 by R J Scheuerle Jr ****; **** Attachment MessageElement.java has been removed from this note on 21 February 2002 by R J Scheuerle Jr ****; **** Attachment RPCHandler.java has been removed from this note on 21 February 2002 by R J Scheuerle Jr ****; **** Attachment SOAPHandler.java has been removed from this note on 21 February 2002 by R J Scheuerle Jr ****; **** Attachment DeserializationContext.java has been removed from this note on 21 February 2002 by R J Scheuerle Jr ****; **** Attachment DeserializationContextImpl.java has been removed from this note on 21 February 2002 by R J Scheuerle Jr ****; **** Attachment DeserializerImpl.java has been removed from this note on 21 February 2002 by R J Scheuerle Jr ****; **** Attachment SerializationContextImpl.java has been removed from this note on 21 February 2002 by R J Scheuerle Jr ****; **** Attachment MessageContext.java has been removed from this note on 21 February 2002 by R J Scheuerle Jr ****