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

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


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

Bela Ban commented on JGRP-2042:
--------------------------------

The solution picked was to add IDs to all {{Header}} subclasses and sanity check them against {{jg-magic-map.xml}}. When serializing a header instance, instead of getting the magic-ID via hashmap lookup, {{Header.getMagicId()}} is called instead. This avoids a hashmap lookup per header when serializaing a message. We have usually 3-4 headers per message, so 3-4 lookups per message we don't have to perform.

> 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: 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