Aller au contenu
La Lettre IT
Retour aux synthèses
3 min de lecture
Développement & outils

Roc rattrape libdeflate : une implémentation DEFLATE fonctionnelle à 8,9 % de la performance C

En bref

  • Richard Feldman a optimisé roc-deflate, une bibliothèque de compression écrite en Roc (langage fonctionnel compilé), pour la comparer à libdeflate (référence en C).
  • Sur 144 benchmarks du corpus Silesia, roc-deflate affiche une médiane de 8,9 % plus lente sur Ryzen 3900X, 2,6 % sur M1.
  • Cette proximité remet en question le mythe d'une écart de performance inévitable entre programmation fonctionnelle pure et C optimisé.
  • Lean 4 a déjà surpassé miniz_oxide (crate Rust populaire), mais s'est heurté à libdeflate et ses optimisations SIMD spécifiques à l'architecture.

Ce que dit la source

L'auteur pose la question : à quel point la programmation fonctionnelle pure peut-elle s'approcher des performances du C ? Il observe que Lean 4 a déjà battu une implémentation Rust largement utilisée (miniz_oxide), mais sans rivaliser avec libdeflate. Il décide de tester Roc, un langage fonctionnel encore immature (pré-0.1.0 à la date de l'article) mais conçu explicitement pour la performance. Après plusieurs mois d'optimisations sur roc-deflate (une bibliothèque de compression DEFLATE écrite en Roc par Niclas Ahden, déjà en production chez son auteur), Feldman mesure le fossé réel.

  • La médiane de roc-deflate sur Ryzen 3900X est 8,9 % plus lente que libdeflate, 2,6 % plus lente sur M1.
  • Le benchmark couvre 144 tests différents du corpus Silesia, en mesurant la compression à 12 niveaux de qualité.
  • libdeflate bénéficie d'optimisations SIMD très fine-tuning (spécifiques à l'architecture), que le compilateur Roc ne peut pas générer automatiquement.
  • Lean 4 avait précédemment surpassé miniz_oxide à tous les niveaux de compression, mais libdeflate reste hors de portée.
  • Roc n'a pas encore d'API streaming pour DEFLATE, ce qui limite le test aux interfaces non-streaming.
  • L'effort d'optimisation a porté sur une bibliothèque produite en Roc, langage fonctionnel conçu pour compiler rapidement et s'exécuter rapidement.

Dans les commentaires

Débat pragmatique, plutôt technique et nuancé. Peu de consensus dogmatique, plusieurs commentateurs soulèvent des objections légitimes sur la méthodologie ou les comparaisons équitables.

  • Plusieurs commentateurs signalent que la comparaison avec miniz_oxide (simple implémentation intentionnelle) est moins pertinente qu'avec zlib-rs, qui surpasse déjà le C en vitesse.
  • Un commentateur pointe l'absence de données sur la qualité de compression (taille du fichier compressé) à niveaux égaux, rendant difficile de conclure sur l'utilité réelle.
  • Critique sur le marketing : citer qu'une dépendance a été téléchargée X fois ne dit rien sur sa maturité ou ses optimisations.
  • Un commentateur soulève un paradoxe : si le code a été modifié par des agents (implicite dans le texte de Feldman sur son processus d'optimisation), quelle garantie de correction reste-t-il ? C'est pourquoi une preuve formelle (comme en Lean) aurait plus de sens qu'une pure implémentation fonctionnelle.
  • Question sur la production : comment justifier d'utiliser Roc en production client quand le langage en est à pré-0.1.0 ? Un commentateur exprime un doute sincère.
  • Observation que le post ne précise pas si les transformations d'optimisation appliquées sont généralisables ou spécifiques à la compression DEFLATE.

Alternatives citées : zlib-rs (Rust), zlib-ng (C), Futhark (langage fonctionnel pour parallélisme massif), D (avec annotations `pure`).

Notre lecture

Résultat technique intéressant, mais l'enjeu reste limité. Roc approche effectivement libdeflate de assez près pour suggérer que la programmation fonctionnelle pure n'est pas un frein insupérable à la performance. Cependant, cet écart subsistant de ~9 % tient largement aux optimisations SIMD, barrière structurelle que peu de compilateurs fonctionnels adressent sans équivalent de l'écriture inline en C. L'intérêt principal est moins "Roc est maintenant viablé pour la prod" (question que soulève un commentateur, et à laquelle personne ne répond directement) que "il existe un chemin plausible pour rapprocher encore les écarts". À surveiller plutôt que d'adopter : Roc reste expérimental, et même à 8,9 % près du C, une implémentation DEFLATE n'est jamais le goulot d'étranglement d'une application. Serait pertinent pour une équipe intéressée par les langages compilés fonctionnels et prête à accepter les risques de stabilité d'un pré-release.

Le brief, dans votre boîte mail

Recevez chaque jour la sélection et l'analyse La Lettre IT, sans avoir à repasser sur le site.