Vladimir Ozerov created IGNITE-1803:
---------------------------------------

             Summary: 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)

Reply via email to