[ https://issues.apache.org/jira/browse/IGNITE-4661?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15863876#comment-15863876 ]
Igor Seliverstov commented on IGNITE-4661: ------------------------------------------ Seems that deleting stripe in {{org.apache.ignite.internal.processors.cache.database.freelist.PagesList#mergeNoNext}} reduces performance. Is it really necessary? Also I've found that there is an inconsistency between {{org.apache.ignite.internal.processors.cache.database.freelist.PagesList#removeDataPage}} method, which deletes the stripe in case it's empty and {{org.apache.ignite.internal.processors.cache.database.freelist.PagesList#takeEmptyPage}} which doesn't do that > Optimizations: optimize PagesList.removeDataPage > ------------------------------------------------ > > Key: IGNITE-4661 > URL: https://issues.apache.org/jira/browse/IGNITE-4661 > Project: Ignite > Issue Type: Task > Components: cache > Reporter: Semen Boikov > Assignee: Igor Seliverstov > Fix For: 2.0 > > > Optimization for new PageMemory approach (IGNITE-3477, branch ignite-3477). > Currently PagesList.removeDataPage requires linear search by page ID, need > check if it makes sense to change structure of PagesList's element from list > to hash table. > Here are links to proposed hash table alrorithm: > http://codecapsule.com/2013/11/11/robin-hood-hashing > http://codecapsule.com/2013/11/17/robin-hood-hashing-backward-shift-deletion/ > Note: with hash table approach 'take' from PagesList will require linear > search, so we'll also need some heuristic to make it more optimal. > For more details see: > IgniteCacheOffheapManagerImpl.update -> FreeListImpl.insertDataRow, > IgniteCacheOffheapManagerImpl.update -> FreeListImpl.removeDataRowByLink. > To check result of optimization IgnitePutRandomValueSizeBenchmark can be used. -- This message was sent by Atlassian JIRA (v6.3.15#6346)