----- Matthieu Fertré <matthieu.fer...@free.fr> a écrit :
> Maybe with some optimizations we can have about 20/25 fps.

btw, here's the oprofile report for a x86 target (oprofile unavailable on a 
real arm target):
2578     11.3189  wormux                   Surface::MergeSurface(Surface&, 
Vector2<int> const&)
2057      9.0314  wormux                   PhysicalObj::GetYDouble() const
1782      7.8240  wormux                   PhysicalObj::GetXDouble() const
1153      5.0623  wormux                   PhysicalObj::GetX() const
1107      4.8604  wormux                   PhysicalObj::GetY() const
1035      4.5443  wormux                   Member::ApplyMovement(member_mvt 
const&, std::vector<c_junction*, std::allocator<c_junction*> >&)
915       4.0174  wormux                   GetObjectAt(Vector2<int> const&)
867       3.8066  wormux                   Tile::GetAlpha(Vector2<int> const&) 
const
821       3.6047  wormux                   
PhysicalObj::CollidedObjectXY(Vector2<int> const&) const
751       3.2973  wormux                   fixedpoint::fixsqrt16(long long)

Another run after changing PIXEL_PER_METER to int32_t:
7906     23.1400  wormux                   Surface::MergeSurface(Surface&, 
Vector2<int> const&)
2786      8.1543  wormux                   PhysicalObj::GetYDouble() const
2255      6.6001  wormux                   PhysicalObj::GetXDouble() const
1436      4.2030  wormux                   PhysicalObj::GetX() const
1390      4.0684  wormux                   PhysicalObj::GetY() const
1168      3.4186  wormux                   Member::ApplyMovement(member_mvt 
const&, std::vector<c_junction*, std::allocator<c_junction*> >&)
1131      3.3103  wormux                   Tile::GetAlpha(Vector2<int> const&) 
const
1092      3.1962  wormux                   
PhysicalObj::CollidedObjectXY(Vector2<int> const&) const
1065      3.1171  wormux                   GetObjectAt(Vector2<int> const&)
916       2.6810  wormux                   fixedpoint::fixsqrt16(long long)

It doesn't seem the special alpha case occurs that often (very obvious 
optimization: use only integer math scaled by say 1<<8 or 1<<16). I can't get 
proper annotation for it, so I don't know exactly how this time is wasted. It 
doesn't seem to be the lock.

Best regards,
Christophe

_______________________________________________
Wormux-dev mailing list
Wormux-dev@gna.org
https://mail.gna.org/listinfo/wormux-dev

Répondre à