Skip to main content

Refonte pour l'optimisation des performances

Copilot Chat peut suggérer des moyens d'accélérer le code qui tourne lentement.

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 faibles en termes de performances et suggérer des stratégies de remaniement telles que l'optimisation des structures de données (par exemple, l'utilisation de hashmaps 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.

Note

Copilot Chat Les réponses ne sont pas déterministes, il est donc possible que vous obteniez une réponse différente de celle présenté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")

Pour aller plus loin