Explicación del concepto
Esta lección no busca convertirte en un ingeniero de rendimiento en un día. Se trata de desarrollar un instinto saludable: cierto código hace el mismo trabajo de forma más limpia y rápida, y debes aprender a notarlo sin obsesionarte con pequeñas diferencias de velocidad. Muchos principiantes escriben algo que funciona y luego asumen que el rendimiento es un tema misterioso para más adelante. La verdad es más sencilla. Empiezas haciendo preguntas prácticas: ¿Estoy repitiendo trabajo? ¿Estoy usando una herramienta que Python ya optimizó para mí? ¿Estoy midiendo el resultado en lugar de adivinar? En esta lección, compararás dos formas de calcular el mismo total. Una versión usa un bucle manual. La otra usa la función `sum` integrada de Python. Ambas son correctas. El objetivo es ver cómo pequeñas decisiones de diseño afectan la legibilidad y el tiempo de ejecución. Al final de esta lección, podrás: • medir el tiempo de ejecución de un script pequeño sin entrar en pánico por los números, • explicar por qué las herramientas integradas suelen ser una mejor opción predeterminada que escribir todo manualmente, • identificar un error de rendimiento obvio: hacer el mismo trabajo más veces de las necesarias. Por qué esto importa: el rendimiento es más fácil de aprender cuando lo tratas como observación, no como magia. Si puedes medir un ejemplo pequeño con calma, los temas de rendimiento más grandes tendrán mucho más sentido más adelante.
Dónde poner el código
- Define variables de color y posición al principio.
- Crea la lógica de dibujo o posicionamiento de formas en el medio.
- Renderiza la salida (impresión, canvas, SVG o bloque con estilo) al final.
Referencia de comandos
- Ejecuta el script más de una vez antes de juzgar el resultado; un solo tiempo puede ser engañoso.
- Compara código que resuelve el mismo problema, no dos tareas completamente diferentes.
- Prefiere una función integrada como `sum()` cuando haga el código más claro y elimine el trabajo manual.
- Mide primero, luego optimiza; adivinar sobre la velocidad es cómo la gente pierde el tiempo.
Guía paso a paso
- Ejecuta el archivo una vez y anota qué versión terminó más rápido en tu máquina.
- Cambia `limit` a un número más pequeño como `50_000`, luego a uno más grande como `500_000`, y compara cómo varían los tiempos.
- Antes de cada ejecución, predice qué versión será más rápida y por qué.
- Edita `total_with_loop()` para que haga trabajo extra innecesario dentro del bucle, ejecútalo de nuevo y observa qué tan rápido se acumulan las pequeñas ineficiencias.
- Escribe una frase explicando la diferencia entre código que es correcto y código que es tanto correcto como eficiente.
Ejercicios prácticos
- Reemplaza `sum()` con otro enfoque, como una expresión generadora o `functools.reduce()`, y compara primero la legibilidad, luego la velocidad.
- Explica por qué imprimir dentro de la parte que estás midiendo haría que tu medición fuera menos útil.
- Piensa en una característica real donde el rendimiento importa más de lo habitual, como procesar muchas filas, servir una API o actualizar repetidamente un puntaje de juego.
Retos de código
- Usa la fórmula de la serie aritmética para calcular el mismo total, luego compárala con las versiones de bucle y la integrada.
- Escribe una nota breve sobre cuándo deberías dejar de optimizar y aceptar la solución más clara en su lugar.
Mini tareas de práctica
- Guarda un resultado de ejecución en tus notas para poder comparar experimentos posteriores.
- Marca la línea en el script donde la medición realmente comienza y termina.
- Elimina cualquier código de prueba deliberadamente lento después de terminar para que la versión final se mantenga limpia.
Error común
Mixing x and y axes or using wrong coordinate origin causes shapes to appear in unexpected places.
Mini reto de la vida real
Draw one square, one triangle, and one circle, then move X marker 2 steps right and 1 step down.