Les bindings Python d’OpenDAL sont-ils plus lents que Python ?
- OpenDAL est une couche d’accès aux données qui permet de récupérer efficacement des données depuis divers services de stockage.
- Des signalements indiquent que les bindings Python d’OpenDAL sont plus lents que Python lui-même.
- Plusieurs hypothèses sont avancées, comme le cache interne de Python, l’accélération de la lecture de fichiers ou encore le surcoût supplémentaire de PyO3.
Le service Fs d’OpenDAL est-il plus lent que Python ?
- Le problème implique plusieurs éléments, dont Rust, OpenDAL, Python et PyO3.
- Il est constaté que le service
fsd’OpenDAL, implémenté en Rust, est lui aussi plus lent que Python.
Rust std::fs est-il plus lent que Python ?
- OpenDAL implémente son service
fsviastd::fs. - Il est confirmé qu’une implémentation utilisant
std::fsde Rust est elle aussi plus lente que Python.
Rust std::fs est-il plus lent que Python ? Vraiment ?
- Le résultat selon lequel Rust
std::fsserait plus lent que Python est remis en question. - L’auteur apprend à analyser les appels système avec
strace. - L’analyse des résultats de
stracene permet pas d’expliquer pourquoi Python est plus rapide alors que les deux utilisentmmap.
Pourquoi utiliser mmap ici ?
mmapne sert pas seulement à mapper un fichier en mémoire, mais aussi à allouer de grandes zones mémoire.- Lorsqu’on demande de la mémoire avec
malloc,glibcpeut utilisermmappour effectuer l’allocation.
Python utilise-t-il le même allocateur mémoire que Rust ?
- Python utilise un allocateur mémoire optimisé pour les petites allocations appelé
pymalloc. pymallocest optimisé pour les petits objets, tandis que les grosses allocations passent parPyMem_RawMalloc()etPyMem_RawRealloc().
Rust est-il plus lent que Python avec son allocateur mémoire par défaut ?
mmapest soupçonné d’être à l’origine du problème.- Il est découvert qu’un programme Rust devient plus rapide que Python après être passé à
jemalloc.
Rust n’est-il plus lent que Python que sur mon ordinateur ?
- Le fait que Rust fonctionne plus lentement que Python ne se produit que sur une machine particulière.
- Des informations détaillées sur le CPU et la mémoire sont fournies.
- Même après avoir ajusté les mécanismes d’atténuation des vulnérabilités CPU, Transparent Hugepage et l’affinité des cœurs CPU, les résultats ne changent pas.
- À l’aide d’un programme eBPF, il est confirmé qu’au niveau des appels système aussi, Rust est plus lent que Python.
Le C est-il plus lent que Python ?
- Une version implémentée en C s’avère elle aussi plus lente que Python.
Le C est-il plus lent que Python ? Sans offset spécifié !
- Une différence dans l’offset des zones mémoire est mise en évidence, et l’ajustement de cet offset améliore les performances du programme C.
- Il est confirmé que, sur les CPU AMD Ryzen, l’absence de certains offsets entraîne une baisse de performances.
L’AMD Ryzen 9 5900X est-il lent sans offset spécifié ?
- Il est confirmé qu’il s’agit d’un problème lié au CPU, et un développeur du noyau prend part à la discussion.
- Un profilage avec
perfconfirme à nouveau qu’en l’absence de cet offset, les performances se dégradent.
L’avis de GN⁺ : Le point le plus important de cet article est que Rust et C peuvent, dans certains environnements matériels, fonctionner plus lentement que Python, et que cela peut être lié à l’allocation mémoire ainsi qu’à certains comportements spécifiques du CPU. Cet article montre, à travers l’exploration des nombreux facteurs qui influencent les performances logicielles, à quel point l’interaction entre matériel et logiciel peut être complexe. Cette enquête offre une leçon précieuse pour résoudre les problèmes inattendus qui peuvent survenir dans le monde de l’ingénierie logicielle.
1 commentaires
Avis sur Hacker News
Avis sur une prémisse déroutante
Discussion sur les indicateurs de fonctionnalités CPU
Lien vers un bug glibc connexe
Réaction positive à l’article
Très bonne appréciation de l’article
Proposition de résolution du problème
Informations sur l’allocateur par défaut de Rust
Réflexions des développeurs Rust pour améliorer les performances
Explication des différences CPU entre AMD et Intel
Transmission de l’article aux bonnes personnes