Битовые поля и полиморфизм для атрибутов объектов игровой карты - PullRequest
1 голос
/ 17 сентября 2010

Этот вопрос по оптимизации меня беспокоил последний день.

В моей программе (простая игра в стиле roguelike) я использую побитовые флаги для хранения атрибутов объектов карты, например, если они сплошные или они визуализируются. Тем не менее, я мог бы добиться этого, используя полиморфизм для возврата соответствующего значения.

Мой вопрос таков: является ли способ значительно быстрее или медленнее, чем в случае использования в цикле связанного списка? Кроме того, одна лучшая практика, чем другая?

Пример кода:

XMapObject *List = ListStart;

while(List != NULL)
{
    if(List->MapObjectFlags & MAPOBJECTFLAG_RENDER)
      OR
    if(List->Render())
    {
        return List->Type;
    }
    else
    {
        List = List->Next;
    }
}

bool XMapObject::Render()
{
     return 1;
}

Спасибо.

1 Ответ

1 голос
/ 17 сентября 2010

Побитовая операция всегда быстрее, чем вызов виртуальной функции.

...