5 points par GN⁺ 2023-07-04 | 1 commentaires | Partager sur WhatsApp
  • Fizz Buzz est un défi de programmation classique donné en entretien.
  • Cet article présente différentes implémentations de FizzBuzz dans divers langages de programmation.
  • Le meilleur débit obtenu jusqu’à présent est d’environ 57,2 GiB/s en assembleur.
  • Cet article fournit des instructions de compilation et d’utilisation pour l’implémentation en assembleur.
  • La version multithread du programme n’a pas permis d’obtenir une amélioration notable des performances.
  • Cet article met en avant les défis et les optimisations liés à une implémentation FizzBuzz haute performance.
  • Cet article traite d’un programme assembleur AVX2 qui implémente l’algorithme FizzBuzz.
  • Le programme utilise un format à grands nombres premiers et l’appel système vmsplice pour de meilleures performances.
  • Le programme comprend plusieurs étapes d’initialisation et routines pour écrire Fizz, Buzz et les numéros de ligne.
  • Cet article mentionne un interpréteur de bytecode produisant une sortie FizzBuzz continue.
  • Le programme en bytecode est interprété à l’aide d’instructions SIMD pour un traitement efficace.
  • Cet article aborde des sections de code spécifiques liées à la boucle principale qui interprète le bytecode et génère la sortie.
  • Le code fourni est une soumission à un défi de programmation visant à optimiser les performances de FizzBuzz.
  • Ce code atteint de hautes performances en exploitant des techniques et instructions avancées.
  • Cet article traite d’un programme C qui génère la séquence FizzBuzz à l’aide de techniques optimisées.
  • Le code a ensuite été davantage optimisé par d’autres développeurs, avec de meilleures performances à la clé.
  • Cet article traite d’une soumission de code utilisant la compilation JIT pour générer un assembleur FizzBuzz plus rapide.
  • Cette implémentation comprend un préprocesseur et du code C vectorisé pour une sortie efficace.
  • Le code a été optimisé et testé sur différents systèmes afin de surpasser les soumissions précédentes.
  • Cet article traite d’une implémentation en C utilisant les instructions AVX2 pour l’optimisation.
  • Cette implémentation inclut un compilateur JIT et atteint une vitesse élevée ainsi qu’une utilisation efficace de la mémoire.
  • Cet article propose une implémentation en Rust pour illustrer la vitesse de FizzBuzz.
  • L’implémentation Rust utilise une conversion entier-vers-chaîne efficace et une technique de découpage du code en chunks.
  • Cet article traite d’un programme C implémentant FizzBuzz à l’aide de techniques avancées et d’optimisations.
  • Ce programme est conçu pour s’exécuter plus rapidement que tous les autres et inclut des explications ainsi que des extraits de code.
  • L’auteur fournit des conseils et avertissements sur l’utilisation de l’appel système vmsplice, ainsi qu’un module de test.
  • Ce texte comprend des extraits de code liés à une fonction nommée fizzbuzz, qui génère efficacement la sortie.

1 commentaires

 
GN⁺ 2023-07-04
Commentaires Hacker News
  • Linux est une architecture système impressionnante, capable de conserver entièrement dans le cache L2 les données transmises par pipe d’un programme à un autre.
  • L’auteur de l’article échange avec des personnes qui n’exécutent pas le programme et répond à des commentaires très détaillés pour résoudre des problèmes liés à l’ASLR.
  • Les performances de l’implémentation de FizzBuzz en Rust sont inattendues, à un niveau comparable à Python 3.
  • Écrire le code en assembleur permet de tout rendre plus rapide.
  • Évaluer la vitesse de résolution de problèmes complexes est en grande partie biaisé, car cela teste surtout l’efficacité de l’extraction mémoire et des transferts inter-processus.
  • L’utilisation de vmsplice peut ne pas correspondre aux règles du concours, car cela permet de donner à un autre processus l’accès à la mémoire du processus.
  • On en vient à se demander quelle est l’importance de l’extension de fichier entre .S et .s.
  • Java est étonnamment rapide comparé à d’autres langages comme C, C++, l’assembleur, Go et Rust.