Rust Mengungguli C ++ dengan Hasil Game Benchmark

Di awal bulan ini ada kemenangan kecil. Menurut hasil terbaru dari tolok ukur populer yang membandingkan kinerja bahasa pemrograman, Rust menempati urutan kedua, ditempatkan antara C dan C ++:

gambar

Untuk membandingkan kinerja, rata-rata geometrik runtime dari 10 program berbeda digunakan. Menurut hasil terbaru, Rust mengungguli C ++ dalam 6 dari 10 tugas .

Di bawah cut beberapa detail dan pendapat tentang prospek masa depan.

Bagaimana cara menginterpretasikan hasil dengan benar?


Benchmarks Game adalah proyek populer di mana bahasa pemrograman dibandingkan berdasarkan pengukuran kinerja yang ditulis oleh komunitas program yang menyelesaikan tugas yang ditugaskan. Sebagai aturan, untuk setiap tugas setidaknya ada beberapa implementasi yang dioptimalkan dengan baik dalam bahasa yang sama. Untuk meringkas hasil, hanya satu implementasi untuk setiap bahasa yang dipilih yang menunjukkan hasil terbaik.

Seharusnya diharapkan bahwa untuk bahasa pemrograman populer, solusi terbaik yang diusulkan mendekati batas kinerja bahasa itu sendiri. Dalam beberapa bulan terakhir, C, C ++, dan Rust telah menunjukkan hasil yang sangat mirip. Dengan demikian, kita dapat menyimpulkan bahwa program Rust yang dioptimalkan dengan baik rata-rata tidak boleh kalah dalam kinerja dibandingkan dengan program C atau C ++ yang dioptimalkan dengan baik.

Tetapi tolok ukur tidak berarti apa-apa!


Ya dan tidak

Tentu saja, perbedaan kinerja implementasi yang berbeda untuk tugas spesifik Anda akan tergantung pada banyak faktor, dan tentu saja akan sangat berbeda dari satu tugas ke tugas lainnya.

Misalnya, Rust menunjukkan hasil komparatif terburuk pada tugas yang solusinya memerlukan penggunaan ekspresi reguler. Dari hasil ini kita dapat menyimpulkan bahwa implementasi ekspresi reguler di Rust (regex crate) lebih lambat dari PCRE2 saat memecahkan masalah. Di sisi lain, Rust terlihat lebih unggul daripada C ++ untuk tugas-tugas yang membutuhkan operasi SIMD yang agresif.

Kesimpulan umum yang harus dibuat: ketika memilih antara Rust dan C ++, kinerja bahasa tidak bisa lagi menjadi alasan untuk memberikan preferensi pada C ++. Setidaknya tanpa tes tambahan.

Bisakah situasi saat ini berubah?


Cukup. C, C ++ dan Rust menunjukkan hasil yang sangat dekat. Sekarang perbedaannya sangat tidak signifikan sehingga kesalahan pengukuran secara signifikan mempengaruhi distribusi tempat pertama di klasemen keseluruhan. Ada kemungkinan bahwa bulan depan Karat dan C ++ akan mengubah tempat lagi, atau C akan memberi jalan ke Karat atau C ++ terlebih dahulu.

Haruskah kita mengharapkan peningkatan kinerja Rust lebih lanjut?


Ya Kompiler Rust adalah proyek yang relatif muda, dan sejumlah besar kemungkinan optimasi belum sepenuhnya dilaksanakan. Kendala utama adalah LLVM, yang secara formal, meskipun merupakan penerjemah universal, dalam praktiknya dioptimalkan dengan baik untuk C / C ++, dan tidak dapat mengatasi dengan baik bytecode (IR) yang diperoleh dari bahasa pemrograman lain.

Karat adalah bahasa pemrograman yang lebih ketat daripada C dan C ++. Ini berarti bahwa untuk program tipikal, Rust dapat memberikan lebih banyak jaminan kepada penerjemah (LLVM), yang pada gilirannya dapat menggunakannya untuk melakukan optimasi yang lebih agresif.

Dengan demikian, harus diharapkan bahwa di tahun-tahun mendatang, Rust akan dapat secara signifikan meningkatkan kinerjanya. Pada saat yang sama, kompiler C / C ++ telah berkembang selama beberapa dekade, dan selama ini mereka telah mencapai batas kemampuan mereka. Optimalisasi lebih lanjut mereka dibatasi terutama oleh fitur bahasa, daripada implementasi kompiler.

Hanya beberapa tahun yang lalu, hanya sedikit yang bisa membayangkan bahwa mungkin untuk menulis kode dengan efisiensi lebih tinggi yang unggul dalam kinerja untuk implementasi C / C ++, menggunakan bahasa pemrograman baru dan bahkan (Tuhan maafkan saya) pendekatan fungsional. Saya pikir di tahun-tahun mendatang, Rust akan membuktikan sebaliknya dengan contoh, mulai menempati tempat pertama yang penuh percaya diri dalam berbagai tes kinerja. Bagaimana dengan kamu?

Source: https://habr.com/ru/post/id480608/


All Articles