Una cita famosa es “la optimización prematura es la raíz de todo mal”. Eso significa que no debe adivinar de antemano qué partes de su código serán un cuello de botella. Si hace eso, pasará mucho tiempo optimizando el código que se ejecuta muy raramente, o simplemente no necesita ser rápido (como algunos trabajos en segundo plano, tal vez). En cambio, comience a medir eso cuando la aplicación esté cerca de completarse, realice algunas pruebas de carga y descubra dónde duele el código.
Pero para hacer eso necesitas saber cómo optimizar el código. Debe comprender la O (n) del código que está escribiendo. Muchas veces, no es necesario optimizar el código, ya sea porque no necesita ser muy rápido o simplemente no se ejecuta con tanta frecuencia. Sin embargo, en algunos casos, el código debe ser MUY rápido, tal vez para darle al usuario una sensación de retroalimentación inmediata en una interfaz de cliente, o un fragmento de código que se ejecuta varios miles de veces por segundo. Un gran programador sabe de qué manera es apropiado en un escenario dado.
Agregar servidores NO es la solución. Facebook, Google y casi cualquier otra compañía de tecnología en el Área de la Bahía que maneja grupos de servidores en miles de personas echarían a su amigo más rápido de lo que podría decir “aumento de carga exponencial” si lo escucharan decir algo como “simplemente agregue más máquinas”, porque es completamente retrasado
- ¿Qué diferencia al aprendizaje profundo de una red neuronal normal?
- ¿Cuál es la diferencia entre 'ingestión de datos' e 'integración de datos'? ¿Son estos términos generales sinónimos o se refieren a conceptos diferentes?
- ¿Qué son las máquinas de factorización y cómo se usan en el aprendizaje automático?
- ¿Por qué el hash cuckoo no se considera un hash perfecto?
- ¿Puedo usar el mismo conjunto de validación para ajustar múltiples parámetros, uno a la vez?
Incluso si ignoramos por completo el hecho de que los servidores se convierten en un gasto bastante grande una vez que comienzas a comprarlos en paquetes de 100, y también ignoramos por completo el hecho de que el fragmentación y la replicación son problemas muy difíciles , todavía es bastante retrasado.
Agregar más máquinas funcionará en una situación teórica en la que el uso de su CPU aumenta linealmente con el uso de la aplicación. Por ejemplo, si obtiene 1000 usuarios más, simplemente agrega un servidor. Si obtiene 2000 usuarios más después de eso, simplemente agregue dos servidores.
Pero si pasa poco o nada de tiempo optimizando su código, puedo GARANTIZARle que hay muchos puntos en su código donde el uso de la CPU aumenta exponencialmente:
Es decir, a 1000 usuarios, necesita 1 servidor. Con 2000 usuarios, necesita 3. Con 3000 usuarios, necesita 7, y así sucesivamente.
Si tiene un código como ese, buena suerte resolviéndolo agregando más servidores una vez que su uso comience a aumentar. Estará quemando todo su tiempo y dinero construyendo esa granja de servidores, y aún no podrá mantenerse al día.
¡Sígueme si estás interesado en este tipo de cosas!
Ah, y si te gusta mi escritura, no te pierdas más.
sígueme en Quora y Twitter (http://twitter.com/mpjme)