28 points par xguru 2022-11-28 | 14 commentaires | Partager sur WhatsApp
  • Deux questions souvent posées en entretien
    • Écrivez un programme qui compte les mots dans un fichier texte
    • Où se situe le goulot d’étranglement des performances dans ce programme ?
  • Beaucoup répondent souvent « la lecture du fichier », mais ce n’est plus vraiment le cas aujourd’hui
  • C’était vrai il y a 10 à 20 ans, mais en 2022 la lecture séquentielle depuis le disque est très rapide (l’auteur ne le savait pas non plus avant de faire le test)
  • Le goulot d’étranglement se trouve dans le traitement/l’analyse de l’entrée et l’allocation en mémoire : découper en mots, convertir en minuscules, compter les fréquences avec une table de hachage, etc.
  • En testant avec Python/Go sur un fichier texte de 413 Mo (la Bible du roi Jacques concaténée 100 fois)
    • La lecture ne prend que 0,1 à 0,2 seconde, tandis que le traitement prend entre 7 et 2 secondes
  • En conclusion, lorsqu’on traite du « big data », l’I/O disque peut ne pas être le goulot d’étranglement

14 commentaires

 
is9117 2022-12-01

Même dans le cas d’un accès séquentiel, il existe selon le langage et la bibliothèque des différences dans l’utilisation des pipelines d’I/O, ainsi que des facteurs comme la fréquence des requêtes d’API d’I/O par les développeurs. Dire que l’I/O n’est plus un goulot d’étranglement suppose donc, à mon avis, certaines conditions préalables.

 
yuriwin 2022-11-30

Le io réseau, ce n'est pas de l'io non plus ? 😂

 
yuriwin 2022-11-30

Même si les E/S deviennent plus rapides, les E/S restent des E/S, c’est bien pour cela qu’il existe des solutions dédiées uniquement à cette partie en programmation.

 
love7peace 2022-11-29

Remplacer tout le stockage big data par des SSD NVMe ? mdr, mais ça coûte combien au juste...

 
loblue 2022-11-28

Pour quelqu’un comme moi qui souffre énormément des E/S disque et doit travailler à faire bouger les plateaux le moins possible, c’est une histoire étonnante.
Le texte parle de « séquentiel ».
S’il n’y a absolument aucun seek, alors ce n’est peut-être pas complètement faux.

 
deokim 2022-11-28

C'est une expérience fondée sur une prémisse erronée.

 
roxie 2022-11-29

Merci de fournir des explications supplémentaires.

 
deokim 2022-12-05

Le concept même de goulot d'étranglement est une question de temps relatif.
Il est pertinent de comparer la vitesse du CPU et les I/O.
Même si les I/O sont devenues plus rapides qu'autrefois, elles ne peuvent pas être plus rapides que le CPU.

 
deokim 2022-12-05

Il est possible d’utiliser mmap pour simplement charger dans la mémoire virtuelle, puis que les lectures réelles se fassent au fur et à mesure que le CPU exécute ses calculs.
La communication entre le CPU et toutes les mémoires (registres, mémoire principale, disque) est elle aussi entièrement de l’I/O.
https://stackoverflow.com/questions/5877797/how-does-mmap-work

 
park2348190 2022-11-28

Je me demande quel sera désormais le critère déterminant pour le big data.

 
nicewook 2022-11-28

C'est fascinant.

 
jungmin1237 2022-11-28

J’apprends encore quelque chose aujourd’hui.

 
xguru 2022-11-28

L’URL du premier commentaire sur https://news.ycombinator.com/item?id=33751266 est assez amusante.
Napkin Math (des maths simplifiées)
L’I/O séquentielle se rapproche presque de la vitesse de la mémoire, apparemment..

 
nicewook 2022-11-28

Le terme « napkin math » est vraiment trop séduisant. On dit que, lors de la création de l’UTF-8, Rob Pike l’aurait griffonné sur une serviette pour le montrer, non ?