[
https://issues.jboss.org/browse/JGRP-2042?page=com.atlassian.jira.plugin....
]
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)