这个优化问题一直困扰着我最后一天。游戏地图对象属性的位域与多态性
在我的程序中(一个简单的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;
}
感谢。
我认为,这是一个过早的优化,你正在做。 – n0rd 2010-09-17 09:52:42
此外,您可以创建非vrtual内联Render()成员函数,该函数只需“返回MapObjectFlags&MAPOBJECTFLAG_RENDER”并使用它来代替隐式按位运算。然后,如果您决定切换到其他检查方法,则只需更改实施。 – n0rd 2010-09-17 09:56:17
@ n0rd:这绝对是不成熟的,但这个问题一直困扰着我,因为我正在监督项目中一些较老的来源。 – 2010-09-17 14:39:38