Tomado del manual de bgt, pero útil para cualquier lenguaje.
Realice la menor cantidad posible de comparaciones de cadenas
Comparar un par de cadenas puede parecer una operación trivial, pero si se hace de forma exhaustiva, sin duda utilizará más potencia de procesamiento de la que necesita. Considere el siguiente script:
void main() {
// Set up a timer to measure performance.
timer counter;
counter.restart();
string some_data="hello";
for(int i=0; i<100000; i++) {
if(some_data=="ball") {
// Do something.
}
}
alert("Result", "The operation took " + counter.elapsed + " milliseconds.");
}
En mi máquina, esto toma un promedio de alrededor de 40 milisegundos. Se puede argumentar que este no es un caso de prueba representativo para el uso en el mundo real, y ciertamente la prueba en sí no lo es, pero la comparación de cadenas puede alcanzar fácilmente esta cantidad en un juego grande si se usa mucho. Ahora, considere el siguiente código modificado:
void main() {
// Set up a timer to measure performance.
timer counter;
counter.restart();
int some_data=5;
for(int i=0; i<100000; i++) {
if(some_data==5) {
// Do something.
}
}
alert("Result", "The operation took " + counter.elapsed + " milliseconds.");
}
Esto toma alrededor de 6 milisegundos en promedio en mi sistema. Una gran diferencia, en otras palabras. Esto demuestra que si bien ambas operaciones parecen triviales, la última es significativamente más rápida que la primera. Por lo tanto, se puede concluir que, si es posible, use números enteros en lugar de cadenas en todo momento. Si define tipos de enemigos, por ejemplo, no use cadenas como "robot", "alienígena" o "monstruo", use enumeraciones o enteros constantes en su lugar. Si bien quizás no se note de inmediato, la diferencia de rendimiento lo beneficiará a largo plazo a medida que su código se expanda.
¿se parece en algo a los clones? la respuesta es un rotundo sí. Comparan tantos strings en npcs, mapas, zones y demás, que el rendimiento es espantoso.