[jboss-jira] [JBoss JIRA] (JGRP-2042) Improve performance of Message#writeHeader

Bela Ban (JIRA) issues at jboss.org
Thu Jul 14 03:09:00 EDT 2016


    [ https://issues.jboss.org/browse/JGRP-2042?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13264761#comment-13264761 ] 

Bela Ban edited comment on JGRP-2042 at 7/14/16 3:08 AM:
---------------------------------------------------------

Hmm, we could create an abstract method {{Header.getMagicId()}} which returns a constant magic ID. When {{ClassConfigurator}} is initialized, it would check that the magic IDs defined in {{jg-magic-map.xml}} actually match the ones returned by {{getId()}}. In case of a mismatch, an exception would be thrown.

Downside: when IDs change, the corresponding header classes have to be changed, too.

Upside: faster serialization (eliminating 1 hashmap lookup for the magic ID). We only have a limited number of header classes anyway.


was (Author: belaban):
Hmm, we could create an abstract method {{Header.getId()}} which returns a constant magic ID. When {{ClassConfigurator}} is initialized, it would check that the magic IDs defined in {{jg-magic-map.xml}} actually match the ones returned by {{getId()}}. In case of a mismatch, an exception would be thrown.

Downside: when IDs change, the corresponding header classes have to be changed, too.

Upside: faster serialization (eliminating 1 hashmap lookup for the magic ID). We only have a limited number of header classes anyway.

> Improve performance of Message#writeHeader
> ------------------------------------------
>
>                 Key: JGRP-2042
>                 URL: https://issues.jboss.org/browse/JGRP-2042
>             Project: JGroups
>          Issue Type: Enhancement
>            Reporter: Sanne Grinovero
>            Assignee: Bela Ban
>            Priority: Minor
>             Fix For: 3.6.11, 4.0
>
>
> The following stacktrace, taken with JFR, is highlighting a CPU consumer which could be optimised.
> {noformat}Stack Trace	Sample Count	Percentage(%)
> java.util.IdentityHashMap.get(Object)	66	2.224
>    org.jgroups.conf.ClassConfigurator.getMagicNumber(Class)	66	2.224
>       org.jgroups.Message.writeHeader(Header, DataOutput)	66	2.224
> {noformat}
> One idea could be to use an ad-hoc implementation of Map which takes advantage of the key being a {{Class}}. An interesting alternative would be to avoid the map lookup altogether, by having the Header expose a method like "writeMagicNumber(DataInput to)".



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the jboss-jira mailing list