Optimizing Code in Java
Pavlos Kosmetatos
Lead Engineer @Wealthyhood
Gestión manual de memoria (C/C++)
$$
Recolección de basura en Java

Compromisos de rendimiento del GC
$$
Algoritmos de GC
// Mal: crear muchos objetos de vida corta for (int i = 0; i < 1000000; i++) { new Object(); // Se convierte en basura de inmediato }// Mejor: reutilizar objetos Object obj; for (int i = 0; i < 1000000; i++) { obj = new Object(); // Solo una referencia }
// Evita esto en código crítico de rendimiento String result = ""; for (int i = 0; i < 100000; i++) { result += i; // Crea un String nuevo cada vez }// Enfoque mejor StringBuilder builder = new StringBuilder(); for (int i = 0; i < 100000; i++) { builder.append(i); // Reusa el mismo buffer } String result = builder.toString();
// Ramas predecibles ayudan a la optimización del JIT
if (value > 0) {
// Código A: ruta tomada con frecuencia
} else {
// Código B: ruta poco frecuente
}
Optimizing Code in Java