viernes, 29 de enero de 2010

Apuntes de optimizacion de C++

Algunos detalles sobre optimizacion de código de C++ que he ido encrontrando por ahi:

1. Inicializar clases
Inicializar las properties de las clases. La inicialización de las clases, se hacen despues de crear las clases contenidas. Es decir, si tenemos una clase A que contiene una clase B y una C, en el momento que creamos la clase A, antes de considerarse creada, se han creado las clases B y C. Asi, si creamos la clase player : tenemos que primero se crea los strings m_Name y m_Profesion y despues entramos en el codigo del constructor. Por eso este código:

class Player
{
public:
Player(const std::string &name)
{
m_Nombre = name;
}
private:
std::string m_Nombre;
std::string m_Profesion;
};

es mas lento que este

class Player
{
public:
Player(const std::string &name)
:m_Nombre(name)
{
}
private:
std::string m_Nombre;
std::string m_Profesion;
};

Porque en el primer caso, primero inicializamos m_Nombre a su valor por defecto y despues a 'name'

2. Crear y definir en la misma linea:

En vez de usar

int nPlayer;
nPlayer = 10;

Es mejor usar

int nPlayer = 10;

Por lo mismo que antes.

3. Mejor preincremento que post incremento:
Es mejor ++i que i++;

4. Sumas de variables:
Casi siempre es mejor

value3 += value2;

que

value3 = value2 + value1;


5. Crea las variables cuando toque:
No crees la variable al principio de la funcion, asi:

bool foo(CVehicle* veh)
{

CPlayer tempPlayer;
if (veh == NULL)
return false;

//.....
}

En este codigo, si veh es nulo, para que crear tempPlayer? Ni no se va a usar....

No hay comentarios:

Publicar un comentario