{"meta":{"title":"Refatorando para otimização de desempenho","intro":"O Bate-papo do Copilot pode sugerir maneiras de acelerar código com execução lenta.","product":"GitHub Copilot","breadcrumbs":[{"href":"/pt/copilot","title":"GitHub Copilot"},{"href":"/pt/copilot/tutorials","title":"Tutoriais"},{"href":"/pt/copilot/tutorials/copilot-chat-cookbook","title":"Livro de Receitas do GitHub Copilot Chat"},{"href":"/pt/copilot/tutorials/copilot-chat-cookbook/refactor-code","title":"Refatorar o código"},{"href":"/pt/copilot/tutorials/copilot-chat-cookbook/refactor-code/refactor-for-optimization","title":"Refatorar para otimização"}],"documentType":"article"},"body":"# Refatorando para otimização de desempenho\n\nO Bate-papo do Copilot pode sugerir maneiras de acelerar código com execução lenta.\n\nO código existente pode funcionar corretamente, mas ser ineficiente, levando a gargalos de desempenho. Exemplos de codificação que podem afetar negativamente o desempenho incluem loops ineficientes, cálculos desnecessários e alocação excessiva de memória.\n\nO Bate-papo do Copilot é capaz de identificar gargalos de desempenho e sugerir estratégias de refatoração, como otimizar estruturas de dados (por exemplo, usar tabelas de hash em vez de matrizes), reduzir cálculos redundantes e melhorar a eficiência dos algoritmos. Ele também pode recomendar mecanismos de cache ou paralelização de operações para aprimorar o desempenho.\n\n## Cenário de exemplo\n\nO código Python a seguir imprime cada 1.000º número primo até o 10.000º primo. Ele inclui um temporizador e imprime quanto tempo o código leva para ser executado como a última linha da saída. O programa leva vários segundos para ser concluído.\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## Solicitação de exemplo\n\n```copilot copy prompt ref=slow-prime\nOptimize this code for performance\n```\n\n## Exemplo de resposta\n\nO Copilot sugere usar uma função de crivo para gerar os números primos de forma muito mais eficiente. Se você executar este programa, ele será concluído em uma fração de segundo.\n\n> \\[!NOTE] Respostas do Bate-papo do Copilot são não determinísticas, portanto, você pode obter uma resposta diferente da mostrada aqui.\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## Leitura adicional\n\n* [Engenharia de prompts para o GitHub Copilot Chat](/pt/copilot/using-github-copilot/prompt-engineering-for-github-copilot)\n* [Práticas recomendadas para usar GitHub Copilot](/pt/copilot/using-github-copilot/best-practices-for-using-github-copilot)"}