#component lookup performance
1 messages · Page 1 of 1 (latest)
index into 2 pointers
m_EntityInChunkByEntity[entity.Index].Chunk
m_EntityInChunkByEntity[entity.Index].IndexInChunk
m_ArchetypeByEntity[entity.Index]
chunk->Buffer + (lookupCache.ComponentOffset + lookupCache.ComponentSizeOf * baseEntityIndex)
then an offset
actual code
public byte* GetComponentDataWithTypeRO(Entity entity, TypeIndex typeIndex, ref LookupCache cache)
{
return ChunkDataUtility.GetComponentDataWithTypeRO(m_EntityInChunkByEntity[entity.Index].Chunk, m_ArchetypeByEntity[entity.Index], m_EntityInChunkByEntity[entity.Index].IndexInChunk, typeIndex, ref cache);
}```
```cs
public static byte* GetComponentDataWithTypeRO(Chunk* chunk, Archetype* archetype, int baseEntityIndex, TypeIndex typeIndex, ref LookupCache lookupCache)
{
if (Hint.Unlikely(lookupCache.Archetype != archetype))
lookupCache.Update(archetype, typeIndex);
return chunk->Buffer + (lookupCache.ComponentOffset + lookupCache.ComponentSizeOf * baseEntityIndex);
}```