[
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.