- ¿Qué es más rápido: punteros de función o interruptor?
La sentencia switch tendría alrededor de 30 case
s, que consta de enteros sin signo enumarated de 0 a 30.C++ Punteros de función vs Switch
que podía hacer lo siguiente:
class myType
{
FunctionEnum func;
string argv[123];
int someOtherValue;
};
// In another file:
myType current;
// Iterate through a vector containing lots of myTypes
// ... for (i=0; i < myVecSize; i ++)
switch (current.func)
{
case 1:
//...
break;
// ........
case 30:
// blah
break;
}
Y Tras pasar por el detector con func
cada vez. Lo bueno del cambio también sería que mi código está más organizado que con 30 funciones.
O podría hacer eso (no tan seguro con eso):
class myType
{
myReturnType (*func)(int all, int of, int my, int args);
string argv[123];
int someOtherValue;
};
que tendría 30 funciones diferentes a continuación, al principio un puntero a uno de ellos se le asigna a myType.
- ¿Qué es probablemente más rápido: cambiar la instrucción o el puntero a la función?
Llamadas por segundo: alrededor de 10 millones. No puedo simplemente probarlo, eso requeriría que lo reescribiera todo. Actualmente usando el interruptor.
Estoy construyendo un intérprete que quiero ser más rápido que Python & Ruby: ¡cada ciclo de reloj es importante!
¿Quieres decir 'myReturnType (* func)();'? – kennytm
@KennyTM: lo olvidé, sí. – Rawr