[ https://issues.apache.org/jira/browse/IGNITE-1803?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Vladimir Ozerov closed IGNITE-1803. ----------------------------------- > Optimize random portable field lookup. > -------------------------------------- > > Key: IGNITE-1803 > URL: https://issues.apache.org/jira/browse/IGNITE-1803 > Project: Ignite > Issue Type: Task > Components: general, interop > 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)