2 poin oleh GN⁺ 2023-11-30 | 1 komentar | Bagikan ke WhatsApp

Apakah binding Python OpenDAL lebih lambat daripada Python?

  • OpenDAL adalah lapisan akses data yang memungkinkan pengambilan data secara efisien dari berbagai layanan penyimpanan.
  • Ada laporan bahwa binding Python OpenDAL lebih lambat daripada Python itu sendiri.
  • Diajukan hipotesis bahwa penyebabnya bisa berupa cache internal Python, akselerasi pembacaan file, dan overhead tambahan dari PyO3.

Apakah layanan Fs OpenDAL lebih lambat daripada Python?

  • Ini adalah masalah yang melibatkan berbagai elemen seperti Rust, OpenDAL, Python, dan PyO3.
  • Ditemukan bahwa layanan fs OpenDAL yang diimplementasikan dengan Rust juga lebih lambat daripada Python.

Apakah Rust std fs lebih lambat daripada Python?

  • OpenDAL mengimplementasikan layanan fs melalui std::fs.
  • Dikonfirmasi bahwa implementasi yang menggunakan std::fs milik Rust juga lebih lambat daripada Python.

Apakah Rust std fs lebih lambat daripada Python? Serius!?

  • Hasil bahwa Rust std fs lebih lambat daripada Python dipertanyakan.
  • Mempelajari analisis system call menggunakan strace.
  • Melalui analisis hasil strace, tidak ditemukan alasan mengapa Python lebih cepat meskipun keduanya sama-sama menggunakan mmap.

Mengapa mmap digunakan di sini?

  • mmap digunakan bukan hanya untuk memetakan file ke memori, tetapi juga untuk mengalokasikan area memori berukuran besar.
  • Saat meminta memori dengan malloc, glibc mengalokasikan memori menggunakan mmap.

Apakah Python memiliki allocator memori yang sama dengan Rust?

  • Python menggunakan allocator memori bernama pymalloc yang dioptimalkan untuk alokasi kecil.
  • pymalloc dioptimalkan untuk objek kecil, sementara untuk alokasi besar digunakan PyMem_RawMalloc() dan PyMem_RawRealloc().

Apakah Rust lebih lambat daripada Python dengan allocator memori default?

  • mmap dicurigai sebagai penyebab masalah.
  • Ditemukan bahwa program Rust yang beralih ke jemalloc berjalan lebih cepat daripada Python.

Apakah Rust lebih lambat daripada Python hanya di komputer saya!

  • Fakta bahwa Rust berjalan lebih lambat daripada Python hanya terjadi pada komputer tertentu.
  • Disediakan informasi rinci tentang CPU dan memori.
  • Menyesuaikan fitur mitigasi kerentanan CPU, Transparent Hugepage, dan afinitas inti CPU pun tidak mengubah hasil.
  • Dengan program eBPF, dikonfirmasi bahwa Rust lebih lambat daripada Python bahkan pada level system call.

Apakah C lebih lambat daripada Python?

  • Ditemukan bahwa versi yang diimplementasikan dalam C juga lebih lambat daripada Python.

Apakah C lebih lambat daripada Python? Tanpa offset yang ditentukan!

  • Ditemukan adanya perbedaan offset pada area memori, dan performa program C ditingkatkan dengan menyesuaikan offset tersebut.
  • Dikonfirmasi bahwa pada CPU AMD Ryzen, penurunan performa terjadi tanpa offset tertentu.

Apakah AMD Ryzen 9 5900X lambat tanpa offset yang ditentukan!

  • Dikonfirmasi bahwa ini adalah masalah terkait CPU, dan seorang pengembang kernel ikut dalam diskusi.
  • Melalui profiling menggunakan perf, kembali dikonfirmasi bahwa penurunan performa terjadi tanpa offset.

Pendapat GN⁺: Poin terpenting dari tulisan ini adalah bahwa Rust dan C dapat berjalan lebih lambat daripada Python pada lingkungan hardware tertentu, dan hal ini dapat disebabkan oleh alokasi memori serta cara kerja spesifik CPU. Tulisan ini menunjukkan betapa kompleksnya interaksi antara hardware dan software melalui proses penelusuran berbagai faktor yang memengaruhi performa perangkat lunak. Penelusuran semacam ini memberikan pelajaran penting untuk menyelesaikan masalah tak terduga yang dapat muncul dalam dunia rekayasa perangkat lunak.

1 komentar

 
GN⁺ 2023-11-30
Opini Hacker News
  • Pendapat tentang premis yang membingungkan

    Seorang pengguna merasa bingung dengan anggapan bahwa fungsi-fungsi pustaka standar Python ditulis dalam Python murni. Menurutnya, perbedaan performa menarik karena metode pembacaan file Python maupun OpenDAL sama-sama merupakan pembungkus Python untuk kode native, tetapi ungkapan "lebih lambat dari Python" terasa aneh. Ia berharap implementasi fungsi pustaka standar Python dibuat dalam kode native dan masing-masing sudah dioptimalkan. Ia tidak terkejut bahwa kesimpulan artikel berkaitan dengan cara kerja kode native, dan meskipun terkejut dengan jawaban tertentu, ia mengakui artikel itu sangat menarik meski dimulai dari premis yang membingungkan.

  • Diskusi tentang flag fitur CPU

    Ada dua flag fitur CPU khusus yang menandakan bahwa instruksi REP STOS/MOV cepat dan dapat digunakan sebagai urutan instruksi pendek untuk memset/memcpy. Membuat rutin yang dioptimalkan secara manual untuk setiap generasi CPU baru adalah penderitaan yang sudah berlangsung puluhan tahun. Ia pun mempertanyakan apakah ini sekarang seharusnya menjadi bagian dari suite pengujian timing milik produsen CPU.

  • Tautan bug glibc terkait

    Memberikan tautan ke bug glibc yang terkait dengan Zen 4.

  • Reaksi positif terhadap artikel

    Seorang pengguna awalnya siap menertawakan penyalahgunaan std::fs setelah membaca artikel tersebut, tetapi kemudian menilai artikel itu ditulis dengan baik dan sangat menarik karena penuh dengan rangkaian misteri dan lubang kelinci.

  • Penilaian tinggi terhadap artikel

    Pengguna lain menilai artikel ini sebagai bacaan paling menarik yang ia temui minggu ini dan memuji bahwa tulisannya dibuat dengan sangat baik.

  • Usulan untuk menyelesaikan masalah

    Sebagai solusi yang tampak jelas, seseorang mengusulkan mengirim patch untuk mengubah metode kernel "copy_user_generic" agar menggunakan implementasi penyalinan memori yang berbeda jika CPU terdeteksi bermasalah dan penyelarasan memori memicu bug kelambatan.

  • Informasi tentang allocator default Rust

    Memberikan informasi bahwa allocator default Rust adalah jemalloc hingga tahun 2018, beserta tautan terkait.

  • Hal yang dipertimbangkan pengembang Rust untuk peningkatan performa

    Mengungkapkan rasa penasaran apakah pengembang Rust sebaiknya mempertimbangkan beralih ke jemallocator demi meningkatkan performa, apakah ini cara agar semua orang mendapatkan performa tambahan secara gratis, apakah codebase C juga bisa mendapat manfaat darinya, dan apakah saat ini masih ada performa yang dibiarkan tidak dimanfaatkan.

  • Penjelasan tentang perbedaan CPU AMD dan Intel

    Menjelaskan bahwa cara AMD menangani penyimpanan string berbeda dari Intel, dan sebaiknya tidak digunakan sampai ukuran data melampaui ukuran L2 CPU. Setelah melewati titik itu, penggunaan penyimpanan string menjadi menguntungkan dan seharusnya berjalan pada "kecepatan DRAM", tetapi karena biaya awalnya tinggi, hingga ambang tersebut tercapai sebaiknya memakai vector load/store 256-bit.

  • Fakta bahwa artikel telah diteruskan kepada orang yang tepat

    Seorang pengguna menyatakan bahwa ia telah meneruskan artikel ini kepada orang-orang yang tepat.