Multithreading has been implemented using a thread that is doing repeatedly serialization and deserialization, as explained above, of a WSDL generated object/class, a number of times (1000), in a while loop. The benchmark time is the lapse of time between the time I start concurrentltly those threads in a pool of say 5, 10 or 15 threads, and the time I wait for all of those threads to be finished.
If you look at how the patch modifies XMLUtils.java, it is very strange that you do not see much difference in your benchmark. The need for synchronized blocks in getDocumentBuilder() and releaseDocumentBuilder() has been removed, and those methods are called *each time* a new XML node is created via newDocument() when a SOAP envelope is parsed, so many, many times. You'll see that if you run a profiler on the code.
In your benchmark, it is your server that is the bottleneck, so you must make sure that your server:
1) is upgraded with the axis library built with the patch.
2) is stressed enough by your client so that it must run multiple threads concurrently to serve the client requests.
To make sure you are running with the patched code, you can build the axis library yourself (this is peanuts with the ant build task).
Sebastien
Vy Ho wrote:
I tried the nightly build, but I didn't notice any difference. When you said multi-thread, what did you mean by that? Do you have multiple threads workin on the clients using a same Call object? Do you mean multi-thread on the server?
I have an Axis client with mutliple threads. Each thread creates its own locator interface, and repeatedly send requests to the server using the same stub returned from the locator. I see no significant difference between the patch. Both do not scale as linear as your numbers for the patched version, but not as worse as your number as the pre-patched version. Performance goes slight down with the patch, but not significant either.
Again, could you please tell me how was your set up of your test.
For sanity check, I download the binary at:
http://cvs.apache.org/dist/axis/nightly/axis-bin-1_2RC2.zip
Notice that the binary is stilled label as 1_2RC2, I wonder if this one has the patched or not. Looking at the current source code, it looks like your patch is implemented.