[
https://issues.apache.org/jira/browse/QPID-320?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Rob Godfrey updated QPID-320:
-----------------------------
Attachment: QPID-320.patch
Patch as per defect description.
> [Performance] Improve performance by remembering protocol version
> -----------------------------------------------------------------
>
> Key: QPID-320
> URL: https://issues.apache.org/jira/browse/QPID-320
> Project: Qpid
> Issue Type: Improvement
> Components: Java Broker, Java Common
> Reporter: Rob Godfrey
> Priority: Minor
> Attachments: QPID-320.patch
>
>
> Currently all methods are looked up using the protocol version every time
> they are received. However once the version is negotiated, the protocol
> version for a session cannot change.
> Therefore we can attach a version specific method registry to the session
> which does not need to look up the methods by protocol version only by method
> / class id.
> Other performance tweaks included in the soon to follow patch:
> 1) Cache low numbered channels in array
> Currently channels are always looked up in a hash map indexed by an int. In
> most cases, only low numbered channels will be used, so we can use an array
> to store these and do a lookup here, instead of incurring the cost of
> auto-boxing and then hashMap lookup. Given that this is called at least once
> (and often more times) on each message received, the small saving is
> worthwhile.
> 2) Reducing autoboxing around messageIds
> messageIds are longs, however they are most often used as the keys to Maps,
> causing a great deal of boxing/unboxing. To reduce unnecessary object
> creation, pass around the Long object messageId rather than the primitive.
> 3) Keep track of queue depth
> Queue depth is currently calculated by iterating over the messages and
> summing their size. This is done at every message add. Instead, simply keep
> a running tally of message size.
> 4) Use singleton / singletonList where we know there will only be one element
> 5) Use EnumMap where key is a enum.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.