YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

French subtitles

← 03-13 Container_Performance

03-13 Container_Performance

Get Embed Code
13 Languages

Showing Revision 8 created 01/20/2016 by QA_SP_4_FR.

  1. Nous avons parlé de la façon dont votre
    code peut être lent
  2. en raison du type de matériel
    sous-jacent qui l'exécute,
  3. vous savez ce problème des branchements
    et des nombres flottants ?
  4. Ça n'en est plus un
    pour le matériel actuel,
  5. mais il y a un tas de problèmes
    dont on doit encore se soucier, à savoir :
  6. l'exécution des primitives
    dans le langage utilisé.
  7. Prenons un algorithme fondamental,
    par exemple le tri.
  8. De nos jours, il existe
    bien des façons de trier,
  9. et certaines sont meilleures que d'autres,
    en fonction des circonstances.
  10. Par exemple, quickSort (tri rapide)
    est généralement
  11. plus rapide que Bubble Sort sauf si
    on a moins de mille éléments
  12. ou qu'on cherche des objets dans
    une grande liste déjà triée.
  13. En général, la meilleure méthode
    est d'utiliser une recherche binaire,
  14. mais c'est une autre histoire
    si on cherche dans un tableau non trié.
  15. Car au lieu de comparer chaque objet
    avec la valeur recherchée,
  16. on peut utiliser une fonction de hachage
    pour la trouver sur-le-champ.
  17. Ce ne sont que des règles de base en
    informatique et en structure de données.
  18. Et heureusement, les langages modernes
    comme JAVA vous fournissent ces conteneurs
  19. et autres algorithmes, ce qui évite
    d'avoir à réécrire les fonctions
  20. MurmurHash ou quickSort
    chaque fois qu'on veut coder.
  21. Mais j'ai une révélation à vous faire.
    Dans toutes mes années de programmation,
  22. le seul problème qui réduit toujours
    la performance d'un projet
  23. est l'exécution des objets que tel
    ou tel conteneur de langage fournit.
  24. Je veux dire, c'est génial, non ?
  25. Java offre la mise en œuvre
    d'une classe de vecteurs
  26. qui peuvent pousser, afficher, ajouter
    et supprimer des objets à loisir,
  27. mais pour atteindre cette souplesse,
    Java utilise une structure de listes liées
  28. qui forment un ensemble unique
    de caractéristiques de performance.
  29. Tant qu'on n'utilise que les objets
    prédéfinis d'une liste, c'est très rapide.
  30. Mais si on veut insérer
    ou supprimer des éléments précis,
  31. il prendra par défaut
    le pire type possible.
  32. Au final, le fait que le système
    sous-jacent fournisse ces conteneurs
  33. n'implique pas
    qu'ils seront performants
  34. dans la façon dont votre programme
    s'en servira concrètement.
  35. James Sutherland a publié une série
    de mini bancs de tests sur l'exécution
  36. de structures de données spécifiques
    fournies par le framework JAVA
  37. et a découvert des différences
    d'exécution vis-à-vis des fonctionnalités
  38. que les gens devraient connaître.
  39. Par exemple, il a constaté que
    l'exécution de Hashtable
  40. était environ 22% plus rapide
    que l'exécution de HashMap
  41. selon l'usage effectif
    des conteneurs en eux-mêmes.
  42. Voilà le principe :
  43. avez-vous étudié les classes de conteneurs
    utilisées dans le code ?
  44. Êtes-vous convaincu qu'il s'agit vraiment
    du conteneur le plus rapide
  45. pour ce que votre code exécute ?
  46. Hum, oui, je m'en doutais.
  47. La bonne nouvelle, c'est qu'on peut
    mieux visualiser les performances
  48. de ces conteneurs avec des MPI
    de profilage bien pratiques dans Android.
  49. Voyons si le code de Chris
    résistera à notre examen.