1
0
Fork 0

Performance optimization: empty() instead of size()>0

empty() is guaranteed to be constant complexity for both vectors and lists, while size() has linear complexity for lists.
This commit is contained in:
Tom Paoletti 2013-03-21 19:43:03 -07:00 committed by James Turner
parent 81cd33e2fa
commit 1f88d1d11b
3 changed files with 11 additions and 5 deletions

View file

@ -1159,7 +1159,7 @@ void Rotor::updateDirectionsAndPositions(float *rot)
void Rotor::compile()
{
// Have we already been compiled?
if(_rotorparts.size() != 0) return;
if(! _rotorparts.empty()) return;
//rotor is divided into _number_of_parts parts
//each part is calcualted at _number_of_segments points
@ -1498,7 +1498,7 @@ void Rotorgear::initRotorIteration(float *lrot,float dt)
{
int i;
float omegarel;
if (!_rotors.size()) return;
if (_rotors.empty()) return;
Rotor* r0 = (Rotor*)_rotors.get(0);
omegarel= r0->getOmegaRelNeu();
for(i=0; i<_rotors.size(); i++) {
@ -1514,7 +1514,7 @@ void Rotorgear::calcForces(float* torqueOut)
// check,<if the engine can handle the torque of the rotors.
// If not reduce the torque to the fueselage and change rotational
// speed of the rotors instead
if (_rotors.size())
if (! _rotors.empty())
{
float omegarel,omegan;
Rotor* r0 = (Rotor*)_rotors.get(0);
@ -1556,7 +1556,7 @@ void Rotorgear::calcForces(float* torqueOut)
//add the rotor brake and the gear fritcion
float dt=0.1f;
if (r0->_rotorparts.size()) dt=((Rotorpart*)r0->_rotorparts.get(0))->getDt();
if (! r0->_rotorparts.empty()) dt=((Rotorpart*)r0->_rotorparts.get(0))->getDt();
float rotor_brake_torque;
rotor_brake_torque=_rotorbrake*_max_power_rotor_brake+_rotorgear_friction;

View file

@ -15,6 +15,7 @@ public:
void* get(int i);
void set(int i, void* p);
int size();
bool empty();
private:
void realloc();
@ -58,6 +59,11 @@ inline int Vector::size()
return _sz;
}
inline bool Vector::empty()
{
return _sz == 0;
}
inline void Vector::realloc()
{
_nelem = 2*_nelem + 1;

View file

@ -254,7 +254,7 @@ bool Wing::isMirrored()
void Wing::compile()
{
// Have we already been compiled?
if(_surfs.size() != 0) return;
if(! _surfs.empty()) return;
// Assemble the start/end coordinates of all control surfaces
// and the wing itself into an array, sort them,