[
https://issues.apache.org/jira/browse/IGNITE-1803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14980680#comment-14980680
]
Vladimir Ozerov commented on IGNITE-1803:
-----------------------------------------
Optimized. Random field lookup become 7x faster. Though, we are still loosing
OptimizedMarshaller. Need to evaluate possible further improvements.
> Optimize random portable field lookup.
> --------------------------------------
>
> Key: IGNITE-1803
> URL: https://issues.apache.org/jira/browse/IGNITE-1803
> Project: Ignite
> Issue Type: Task
> Components: general
> Affects Versions: ignite-1.4
> Reporter: Vladimir Ozerov
> Assignee: Vladimir Ozerov
> Priority: Critical
> Fix For: 1.5
>
>
> This ticket should be implemented after IGNITE-1770 is ready because it
> relies on constant-time lookup feature availability.
> The following optimizations should be performed:
> 1) Create method "PortableFieldReader createFieldReader()" on PortableObject
> interface. This will minimize garbage and let us get rid from unnecessary
> header parsing.
> 2) Field position is calculated as follows:
> - Lookup ID mapper for type, get ID;
> - Lookup schemas for type;
> - Lookup schema for schema ID;
> - Lookup field offset for field ID inside schema.
> 4 (!!!) map lookups! It should work as follows:
> - Lookup ID mapper and schemas for type;
> - Lookup field offset using (schema ID + field ID).
> The latter lookup should be performed from highly optimized long->int map,
> not from conventional HashMap.
> 3) Normal field scan is faster than constant-time lookup when amount of
> fields is about 10. We need to have two field search strategies and pick the
> most performant one based on field count (which can be derived in advance
> from object footer size).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)