[ 
https://issues.apache.org/activemq/browse/AMQCPP-93?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_39520
 ] 

Gerald Kaas edited comment on AMQCPP-93 at 6/25/07 2:47 PM:
------------------------------------------------------------

Timothy, thank you for the response. I understand your design and appreciate 
it. Unfortunately without some design change performance cannot be improved. We 
are seeing the unmarshalling code causing 4 times more CPU than our other two 
middleware products we use. Unfortunately this not only impacts throughput but 
also causes CPU starvation away from the other threads/processes. According to 
the profiler everything else looks great, but the unmarshaller has some simple 
but major CPU problems. I don't know of any other way to improve on it other 
than use our own marshaller and unmarshaller. This isn't as much as an issue 
since already have code in place for one of our other middleware products we 
use. 

Making the changes I suggested will double your performance but it will require 
some changes so that you can support EOF in the unsigned char read() operator. 
Either you can change the declaration to bool read(unsigned char& c) and return 
true/false if it hit an EOF or have the read functions through an EOF 
themselves. Either way I'm not sure if it pertains to this issue anymore.

I hope my contributions will help if someone wants to take a look at the 
performance in the future. I hope and wish everyone the best. Thank you for 
your help.


 was:
Timothy, thank you for the response. I understand your design and appreciate 
it. Unfortunately without some design change performance cannot be improved. We 
are seeing the unmarshalling code taking 4 times more CPU than our other two 
middleware products we use. Unfortunately this not only impacts throughput but 
also causes CPU starvation away from the other threads/processes. According to 
the profiler everything else looks great, but the unmarshaller has some simple 
but major CPU problems. I don't know of any other way to improve on it other 
than use our own marshaller and unmarshaller. This isn't as much as an issue 
since already have code in place for one of our other middleware products we 
use. 

Making the changes I suggested will double your performance but it will require 
some changes so that you can support EOF in the unsigned char read() operator. 
Either you can change the declaration to bool read(unsigned char& c) and return 
true/false if it hit an EOF or have the read functions through an EOF 
themselves. Either way I'm not sure if it pertains to this issue anymore.

I hope my contributions will help if someone wants to take a look at the 
performance in the future. I hope and wish everyone the best. Thank you for 
your help.

> Performance analysis
> --------------------
>
>                 Key: AMQCPP-93
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-93
>             Project: ActiveMQ C++ Client
>          Issue Type: Task
>    Affects Versions: 2.0
>            Reporter: Nathan Mittler
>            Assignee: Nathan Mittler
>             Fix For: 2.2
>
>         Attachments: amqcpp-perf1.patch, amqcpp-perf1v2.patch, bench1.cpp, 
> bench2.cpp, DataInputStream.patch, DataOutputStreamv0.patch, patch Results.xls
>
>
> Do a performance analysis on openwire vs stomp.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to