activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gerald Kaas (JIRA)" <>
Subject [jira] Commented: (AMQCPP-93) Performance analysis
Date Mon, 25 Jun 2007 19:02:34 GMT


Gerald Kaas commented on AMQCPP-93:

Timothy, I have carefully looked at BufferedInputStream and ByteArrayInputStream read(unsigned
char*, size_t ) and they have NO LOGIC to return -1. These methods currently always throw
IOException which means that the contract is never followed in the first place. Since -1 is
never returned and IOException is always thrown, DataInputStream::readFully can never throw
a EOFException. The unit tests cases don't test these conditions. I have a small test program
which can be walked through with the debugger if you wish.

Where should we go from here? According to the current logic, unsigned char read() and size_t
read(unsigned char*, size_t) act exactly the same for reading a single byte. We will always
hit a major performance problem until we can stop calling a virtual function for each character
in a string. The other unmarshalling read statements can probably be improved upon by calling
readFully for more than 1 character, but the only way I can think of that we can improve string
is to add a readString pure virtual function in the InputStream class which then all derived
classes need to implement.

Please research and comment.

> Performance analysis
> --------------------
>                 Key: AMQCPP-93
>                 URL:
>             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.

View raw message