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 ****

Reply via email to