Le code existant peut fonctionner correctement, mais ĂȘtre inefficace, ce qui entraĂźne des goulots dâĂ©tranglement des performances. Les exemples de codage qui peuvent avoir un impact nĂ©gatif sur les performances incluent des boucles inefficaces, des calculs inutiles et une allocation excessive de mĂ©moire.
Copilot Chat peut identifier les points critiques en matiĂšre de performances et suggĂ©rer des stratĂ©gies de refactorisation telles que lâoptimisation des structures de donnĂ©es (par exemple, en utilisant des tables de hachage au lieu de tableaux), la rĂ©duction des calculs redondants et lâamĂ©lioration de lâefficacitĂ© algorithmique. Il peut Ă©galement recommander des mĂ©canismes de mise en cache ou des opĂ©rations de parallĂ©lisation pour amĂ©liorer les performances.
Exemple de scénario
Le code Python suivant imprime tous les 1000e nombre premier jusquâau 10 000e premier. Il inclut un minuteur et imprime la durĂ©e dâexĂ©cution du code comme derniĂšre ligne de la sortie. Notez que le processus prend plusieurs secondes.
import time
def is_prime(n):
if n <= 1:
return False
for i in range(2, n):
if n % i == 0:
return False
return True
def every_1000th_prime():
primes = []
num = 2
while len(primes) < 10000:
if is_prime(num):
primes.append(num)
num += 1
return [primes[i] for i in range(999, 10000, 1000)]
if __name__ == "__main__":
start_time = time.time()
primes = every_1000th_prime()
for prime in primes:
print(prime)
end_time = time.time()
elapsed_time = end_time - start_time
print(f"Time taken: {elapsed_time:.10f} seconds")
Exemples dâinvite
Optimize this code for performance
Exemple de réponse
Copilot propose d'utiliser une fonction de tamisage pour générer les nombres premiers de maniÚre beaucoup plus efficace. Si vous exécutez ce programme, il s'achÚvera en une fraction de seconde.
Remarque
Les réponses Copilot Chat ne sont pas déterministes, vous pouvez donc obtenir une réponse différente de celle affichée ici.
import time
def sieve_of_eratosthenes(limit):
sieve = [True] * (limit + 1)
sieve[0] = sieve[1] = False
for start in range(2, int(limit**0.5) + 1):
if sieve[start]:
for multiple in range(start*start, limit + 1, start):
sieve[multiple] = False
return [num for num, is_prime in enumerate(sieve) if is_prime]
def every_1000th_prime():
limit = 105000 # Higher than needed to ensure 10,000 primes
primes = sieve_of_eratosthenes(limit)
return [primes[i] for i in range(999, 10000, 1000)]
if __name__ == "__main__":
start_time = time.time()
primes = every_1000th_prime()
for prime in primes:
print(prime)
end_time = time.time()
elapsed_time = end_time - start_time
print(f"Time taken: {elapsed_time:.10f} seconds")