{"meta":{"title":"Refactorización para la optimización del rendimiento","intro":"Copilot Chat puede sugerir maneras de acelerar el código de ejecución lenta.","product":"GitHub Copilot","breadcrumbs":[{"href":"/es/copilot","title":"GitHub Copilot"},{"href":"/es/copilot/tutorials","title":"Tutoriales"},{"href":"/es/copilot/tutorials/copilot-cookbook","title":"Recetario de GitHub Copilot"},{"href":"/es/copilot/tutorials/copilot-cookbook/refactor-code","title":"Refactorización de código"},{"href":"/es/copilot/tutorials/copilot-cookbook/refactor-code/refactor-for-optimization","title":"Refactorización para la optimización"}],"documentType":"article"},"body":"# Refactorización para la optimización del rendimiento\n\nCopilot Chat puede sugerir maneras de acelerar el código de ejecución lenta.\n\nEl código existente puede funcionar correctamente pero ser ineficiente, lo que da lugar a problemas de rendimiento. Algunos ejemplos de codificación que pueden afectar negativamente al rendimiento son bucles ineficaces, cálculos innecesarios y asignación de memoria excesiva.\n\nCopilot Chat puede identificar zonas activas de rendimiento y sugerir estrategias de refactorización, como optimizar estructuras de datos (por ejemplo, usar mapas hash en lugar de matrices), reducir los cálculos redundantes y mejorar la eficiencia algorítmica. También puede recomendar mecanismos de almacenamiento en caché u operaciones de paralelización para mejorar el rendimiento.\n\n## Escenario de ejemplo\n\nEl siguiente código de Python imprime cada número primo 1000 hasta el primo 10 000. Incluye un temporizador e imprime el tiempo que el código tarda en ejecutarse como última línea de la salida. El programa tarda varios segundos en completarse.\n\n```python id=slow-prime\nimport time\n\ndef is_prime(n):\n    if n <= 1:\n        return False\n    for i in range(2, n):\n        if n % i == 0:\n            return False\n    return True\n\ndef every_1000th_prime():\n    primes = []\n    num = 2\n    while len(primes) < 10000:\n        if is_prime(num):\n            primes.append(num)\n        num += 1\n    return [primes[i] for i in range(999, 10000, 1000)]\n\nif __name__ == \"__main__\":\n    start_time = time.time()\n    primes = every_1000th_prime()\n    for prime in primes:\n        print(prime)\n    end_time = time.time()\n    elapsed_time = end_time - start_time\n    print(f\"Time taken: {elapsed_time:.10f} seconds\")\n```\n\n## Mensaje de ejemplo\n\n```copilot copy prompt ref=slow-prime\nOptimize this code for performance\n```\n\n## Respuesta de ejemplo\n\nCopilot sugiere el uso de una función de sieve para generar los números primos de forma mucho más eficaz. Si ejecutas este programa, se completará en una fracción de segundo.\n\n> \\[!NOTE]\n> Copilot Chat las respuestas son no deterministas, por lo que puede obtener una respuesta diferente de la que se muestra aquí.\n\n```python\nimport time\n\ndef sieve_of_eratosthenes(limit):\n    sieve = [True] * (limit + 1)\n    sieve[0] = sieve[1] = False\n    for start in range(2, int(limit**0.5) + 1):\n        if sieve[start]:\n            for multiple in range(start*start, limit + 1, start):\n                sieve[multiple] = False\n    return [num for num, is_prime in enumerate(sieve) if is_prime]\n\ndef every_1000th_prime():\n    limit = 105000  # Higher than needed to ensure 10,000 primes\n    primes = sieve_of_eratosthenes(limit)\n    return [primes[i] for i in range(999, 10000, 1000)]\n\nif __name__ == \"__main__\":\n    start_time = time.time()\n    primes = every_1000th_prime()\n    for prime in primes:\n        print(prime)\n    end_time = time.time()\n    elapsed_time = end_time - start_time\n    print(f\"Time taken: {elapsed_time:.10f} seconds\")\n```\n\n## Lectura adicional\n\n* [Ingeniería de mensajes para GitHub Copilot Chat](/es/copilot/concepts/prompting/prompt-engineering)\n* [Procedimientos recomendados para usar GitHub Copilot](/es/copilot/get-started/best-practices)"}