Analyse des performances

Pour un programme traitant de grandes quantités de données, quelle amélioration a le plus de chances d'apporter la plus forte accélération ?

  1. ARaccourcir les noms de variables
  2. BRemplacer un algorithme de complexité n² par un algorithme en n log n
  3. CSupprimer les commentaires
Afficher la réponse et l'explication

Réponse : B. Remplacer un algorithme de complexité n² par un algorithme en n log n

Pour n = 1 million de données, n² vaut mille milliards et n log n environ 20 millions, soit un écart de 50 000 fois. Comparée aux gains de quelques fois apportés par l'optimisation fine des instructions ou l'amélioration du matériel, l'amélioration algorithmique peut avoir un effet de plusieurs ordres de grandeur. On vérifie d'abord qu'aucun algorithme de forte complexité n'est utilisé, puis l'on ajoute les améliorations d'utilisation du cache, de parallélisation, etc.

S'entraîner sur ce thème Retour au thème

Autres questions sur Analyse des performances

  1. Dans le développement logiciel, quel est l'objectif correct de l'exécution automatique de benchmarks à chaque modification, avec enregistrement des résultats ?
  2. Sur un ordinateur portable, les résultats d'un benchmark varient fortement d'une exécution à l'autre pour le même programme. Quelle association entre cause côté CPU et remède est correcte ?
  3. Pourquoi, lors de mesures de performances sur un système multicœur ou NUMA, fixe-t-on parfois les threads sur des cœurs spécifiques (réglage de l'affinité) ?
  4. Lors de l'analyse des performances d'un programme utilisant un GPU, quel est le premier point le plus approprié à vérifier ?
  5. Lors du choix de serveurs pour un centre de données, quel élément NE fait PAS partie des critères à considérer au-delà des performances de pointe ?