You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Nikolay Izhikov (JIRA)" <ji...@apache.org> on 2018/04/02 18:58:00 UTC
[jira] [Commented] (IGNITE-7931) Wrong arguments for
ConcurrentHashMap
[ https://issues.apache.org/jira/browse/IGNITE-7931?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16422978#comment-16422978 ]
Nikolay Izhikov commented on IGNITE-7931:
-----------------------------------------
TeamCity - https://ci.ignite.apache.org/viewLog.html?buildId=1172948&tab=buildResultsDiv&buildTypeId=IgniteTests24Java8_RunAll
> Wrong arguments for ConcurrentHashMap
> --------------------------------------
>
> Key: IGNITE-7931
> URL: https://issues.apache.org/jira/browse/IGNITE-7931
> Project: Ignite
> Issue Type: Improvement
> Reporter: Ivan Fedotov
> Assignee: Ivan Fedotov
> Priority: Trivial
> Fix For: 2.5
>
>
> When creating ConcurrentHashMap:
> {code:java|title=BinaryUtils.java}
> new ConcurrentHashMap<>(U.capacity((map).size()));{code}
> [1], [2] `U.capacity` returns capacity that is sufficient to keep the map from being resized. In ConcurrentHashMap this is unnecessary because recalculation already performs in the constructor.
> Similar problem in GridConcurrentHashSet because inside it implements ConcurrentHashMap:
> {code:java|title=DataStreamerImpl.java}
> keys = new GridConcurrentHashSet<>(entries.size(), U.capacity(entries.size()), 1);{code}
> [3],[4] result of `U.capacity` is passed as `loadFactor` value. When loadFactor == U.capacity, initial size of table is 1.
> This leads to performance penalty due to rehashing of internal map.
>
> [1][https://github.com/1vanan/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java#L670]
> [2][https://github.com/1vanan/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java#L688|https://github.com/1vanan/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java#L670]
> [3][https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImpl.java#L633]
> [4][https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImpl.java#L574]
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)