Sind die Python-Bindings von OpenDAL langsamer als Python?
- OpenDAL ist eine Datenzugriffsschicht, die eine effiziente Abfrage von Daten aus verschiedenen Speicherdiensten ermöglicht.
- Es gibt Berichte, dass die Python-Bindings von OpenDAL langsamer sind als Python selbst.
- Als Hypothese werden interner Python-Cache, beschleunigtes Dateilesen und zusätzlicher Overhead durch PyO3 genannt.
Ist der OpenDAL-Fs-Service langsamer als Python?
- Es handelt sich um ein Problem, an dem mehrere Faktoren beteiligt sind, darunter Rust, OpenDAL, Python und PyO3.
- Es wurde festgestellt, dass auch der in Rust implementierte OpenDAL-Fs-Service langsamer ist als Python.
Ist Rusts std::fs langsamer als Python?
- OpenDAL implementiert den Fs-Service über
std::fs. - Es wurde bestätigt, dass auch eine Implementierung mit Rusts
std::fslangsamer ist als Python.
Ist Rusts std::fs langsamer als Python? Wirklich!?
- Das Ergebnis, dass Rusts
std::fslangsamer als Python sei, wird infrage gestellt. - Es wird gelernt, wie man mit
straceSystemaufrufe analysiert. - Trotz Auswertung der
strace-Ergebnisse lässt sich nicht erklären, warum Python schneller ist, obwohl beidemmapverwenden.
Warum wird hier mmap verwendet?
mmapwird nicht nur zum Mapping von Dateien in den Speicher verwendet, sondern auch zur Zuweisung großer Speicherbereiche.- Wenn Speicher mit
mallocangefordert wird, verwendetglibczur Speicherzuweisungmmap.
Verwendet Python denselben Speicher-Allocator wie Rust?
- Python verwendet einen auf kleine Allokationen optimierten Speicher-Allocator namens
pymalloc. pymallocist für kleine Objekte optimiert und verwendet für große AllokationenPyMem_RawMalloc()undPyMem_RawRealloc().
Ist Rust mit dem Standard-Speicher-Allocator langsamer als Python?
- Es besteht der Verdacht, dass
mmapdas Problem verursacht. - Es wurde festgestellt, dass ein auf
jemallocumgestelltes Rust-Programm schneller läuft als Python.
Ist Rust nur auf meinem Computer langsamer als Python!
- Dass Rust langsamer als Python läuft, tritt nur auf einem bestimmten Computer auf.
- Es werden detaillierte Informationen zu CPU und Speicher bereitgestellt.
- Auch nach Anpassungen an CPU-Schwachstellen-Mitigierungen, Transparent Hugepage und CPU-Core-Affinität ändert sich das Ergebnis nicht.
- Mit einem eBPF-Programm wird bestätigt, dass Rust auch auf Ebene der Systemaufrufe langsamer ist als Python.
Ist C langsamer als Python?
- Es wurde festgestellt, dass auch eine in C implementierte Version langsamer ist als Python.
Ist C langsamer als Python? Ohne festgelegten Offset!
- Es wird entdeckt, dass es Unterschiede bei den Offsets im Speicherbereich gibt, und durch Anpassung des Offsets wird das C-Programm beschleunigt.
- Auf AMD-Ryzen-CPUs wurde bestätigt, dass ohne einen bestimmten Offset ein Leistungseinbruch auftritt.
Ist ein AMD Ryzen 9 5900X ohne festgelegten Offset langsam!
- Es wird bestätigt, dass es sich um ein CPU-bezogenes Problem handelt, und ein Kernel-Entwickler beteiligt sich an der Diskussion.
- Durch Profiling mit
perfwird erneut bestätigt, dass ohne Offset ein Leistungseinbruch auftritt.
GN⁺-Meinung: Der wichtigste Punkt dieses Artikels ist, dass Rust und C in bestimmten Hardware-Umgebungen langsamer als Python laufen können und dass dies auf Speicher-Allokation und bestimmte Verhaltensweisen der CPU zurückzuführen sein kann. Der Artikel zeigt durch die Untersuchung verschiedener Faktoren, die die Software-Performance beeinflussen, wie komplex die Wechselwirkung zwischen Hardware und Software sein kann. Diese Untersuchung liefert eine wichtige Lehre für die Lösung unerwarteter Probleme, die in der Welt des Software Engineerings auftreten können.
1 Kommentare
Hacker-News-Kommentare
Meinung zu einer verwirrenden Prämisse
Diskussion über CPU-Feature-Flags
Link zu einem relevanten glibc-Bug
Positive Reaktion auf den Artikel
Sehr hohe Bewertung des Artikels
Vorschlag zur Problemlösung
Informationen über den Standard-Allocator von Rust
Überlegungen von Rust-Entwicklern zur Leistungssteigerung
Erklärung zu CPU-Unterschieden zwischen AMD und Intel
Artikel an die richtigen Leute weitergeleitet