私は自分のゲームをプロファイリングしていますが、ここでかなりの時間を費やしているようです:
const Rectangle Widget::getAbsoluteRectangle() const
0.01s {
Point absLocation;
0.00s absLocation = getLocation();
if(!getParent())
{
return Rectangle(absLocation.getX(),absLocation.getY(),
getSize().getWidth(),getSize().getHeight());
}
const Widget* parent = this;
int eX = 0;
int eY = 0;
while(parent->getParent() != NULL)
{
0.02s parent = parent->getParent();
0.01s eX = parent->getMargin(SIDE_LEFT);
0.04s eY = parent->getMargin(SIDE_TOP);
0.03s absLocation.setX(absLocation.getX() + parent->getLocation().getX() + eX);
0.04s absLocation.setY(absLocation.getY() + parent->getLocation().getY() + eY);
}
0.02s return Rectangle(absLocation,getSize());
0.01s }
親の1つが移動またはサイズ変更されたときに、この結果をキャッシュして無効にすることを考えましたが、最初に明らかな最適化があるかどうかを知りたいです。
ありがとう