OpenDAL Python binding’i Python’dan daha mı yavaş?
- OpenDAL, çeşitli depolama servislerinden veriyi verimli şekilde almayı sağlayan bir veri erişim katmanıdır.
- OpenDAL’in Python binding’inin Python’ın kendisinden daha yavaş olduğuna dair bir rapor vardır.
- Bunun nedeni olarak Python iç önbelleği, dosya okuma hızlandırması ve PyO3’ün ek overhead’i gibi etkenler öne sürülür.
OpenDAL Fs servisi Python’dan daha mı yavaş?
- Bu, Rust, OpenDAL, Python ve PyO3 gibi birden çok unsurun dahil olduğu bir sorundur.
- Rust ile uygulanan OpenDAL fs servisinin de Python’dan daha yavaş olduğu görülür.
Rust std::fs, Python’dan daha mı yavaş?
- OpenDAL, fs servisini
std::fsüzerinden uygular. - Rust’un
std::fskullanan uygulamasının da Python’dan daha yavaş olduğu doğrulanır.
Rust std::fs, Python’dan daha mı yavaş? Gerçekten mi!?
- Rust
std::fs’in Python’dan daha yavaş çıktığı sonuca şüpheyle yaklaşılır. - Sistem çağrılarını analiz etmek için
stracekullanımı öğrenilir. stracesonuçları incelendiğinde, her ikisi demmapkullanmasına rağmen Python’ın neden daha hızlı olduğu bulunamaz.
Burada neden mmap kullanılıyor?
mmap, yalnızca dosyayı belleğe eşlemek için değil, büyük bellek alanları ayırmak için de kullanılır.mallocile bellek istendiğinde,glibcbelleği ayırmak içinmmapkullanır.
Python, Rust ile aynı bellek ayırıcısını mı kullanıyor?
- Python, küçük tahsisler için optimize edilmiş
pymallocadlı bir bellek ayırıcı kullanır. pymallocküçük nesneler için optimize edilmiştir; büyük tahsislerde isePyMem_RawMalloc()vePyMem_RawRealloc()kullanılır.
Varsayılan bellek ayırıcısıyla Rust, Python’dan daha mı yavaş?
- Sorunun kaynağının
mmapolduğu düşünülür. jemalloc’a geçirilen Rust programının Python’dan daha hızlı çalıştığı görülür.
Rust neden sadece benim bilgisayarımda Python’dan daha yavaş!
- Rust’un Python’dan daha yavaş çalışması yalnızca belirli bir bilgisayarda ortaya çıkar.
- CPU ve bellek hakkında ayrıntılı bilgi verilir.
- CPU zafiyet azaltımları, Transparent Hugepage ve CPU çekirdek affinity’si ayarlansa da sonuç değişmez.
- eBPF programı kullanılarak Rust’un sistem çağrısı düzeyinde de Python’dan daha yavaş olduğu doğrulanır.
C, Python’dan daha mı yavaş?
- C ile yazılan sürümün de Python’dan daha yavaş olduğu görülür.
C, Python’dan daha mı yavaş? Belirlenmiş offset olmadan!
- Bellek bölgesi offset’lerinde fark olduğu fark edilir ve offset ayarlanarak C programının hızı artırılır.
- AMD Ryzen CPU’da belirli bir offset olmadan performans düşüşü yaşandığı doğrulanır.
AMD Ryzen 9 5900X, belirlenmiş offset olmadan mı yavaş!
- Bunun CPU ile ilgili bir sorun olduğu doğrulanır ve tartışmaya bir kernel geliştiricisi katılır.
perfile yapılan profillemede de offset olmadığında performans düşüşü yeniden doğrulanır.
GN⁺ görüşü: Bu yazıdaki en önemli nokta, Rust ve C’nin belirli donanım ortamlarında Python’dan daha yavaş çalışabilmesi ve bunun bellek tahsisi ile CPU’nun belirli çalışma biçimlerinden kaynaklanabilmesidir. Yazı, yazılım performansını etkileyen çeşitli unsurları araştırma süreci üzerinden donanım ile yazılım etkileşiminin ne kadar karmaşık olabileceğini gösteriyor. Bu tür incelemeler, yazılım mühendisliğinde ortaya çıkabilecek beklenmedik sorunları çözmek için önemli dersler sunuyor.
1 yorum
Hacker News görüşleri
Kafa karıştırıcı ön kabule dair görüş
CPU özellik bayrakları hakkında tartışma
İlgili glibc hata bağlantısı
Makaleye olumlu tepki
Makaleye yüksek değerlendirme
Sorunu çözmek için öneri
Rust'ın varsayılan allocator'ü hakkında bilgi
Performans artışı için Rust geliştiricilerinin değerlendirebileceği konu
AMD ve Intel CPU farklarına dair açıklama
Makalenin doğru kişilere iletildiğinin belirtilmesi