Teknologi

Seberapa Dekat Pemrograman Fungsional Murni dengan C?

Daftar Isi
  1. Perbandingan Kinerja dengan Libdeflate
  2. Keunggulan Pustaka Pure-Roc Dibanding C
  3. Optimalisasi Khusus dalam Roc

Sebuah eksperimen kompresi data menggunakan bahasa pemrograman fungsional Roc menunjukkan hasil yang mengejutkan dalam hal kecepatan eksekusi. Paket kompresi DEFLATE berbasis Roc berhasil menyaingi performa pustaka C legendaris, libdeflate, dengan selisih kecepatan yang sangat tipis.

Perbandingan Kinerja dengan Libdeflate

Pengujian pada paket roc-deflate—yang ditulis oleh Niclas Ahden—menggunakan korpus Silesia klasik untuk membandingkan kinerjanya dengan libdeflate yang ditulis dalam bahasa C. Berdasarkan hasil pengujian pada komputer jinjing M1 MacBook Pro 2021 dan mesin Ubuntu AMD Ryzen 9 3900X, roc-deflate mencatatkan rata-rata waktu yang sedikit lebih lambat dibandingkan libdeflate.

Dalam kasus median, roc-deflate berjalan 8,9 persen lebih lambat pada prosesor Ryzen 3900X dan hanya 2,6 persen lebih lambat pada M1 MacBook Pro. Pada input terburuk, roc-deflate tercatat 18 persen lebih lambat, sementara pada input terbaiknya, bahasa fungsional tersebut justru unggul lebih dari 18 persen lebih cepat.

Meskipun batasan performa maksimal C tetap lebih tinggi karena tidak memerlukan pemeriksaan batas memori (bounds checks) dan menggunakan SIMD khusus arsitektur, pencapaian ini menunjukkan potensi bahasa fungsional. Roc sendiri merupakan bahasa pemrograman fungsional yang berfokus pada performa runtime dan manajemen memori otomatis, serta masih bersiap menyambut rilis bernomor perdana.

Keunggulan Pustaka Pure-Roc Dibanding C

Penerapan pustaka murni berbasis Roc menawarkan sejumlah keunggulan mendasar dibandingkan implementasi C murni. Keunggulan tersebut mencakup keamanan memori penuh tanpa opsi pengecualian, ketiadaan efek samping yang diverifikasi oleh sistem tipe, serta keamanan rantai pasokan tanpa antarmuka Fungsional Asing (FFI) sembarangan.

Selain itu, fungsi-fungsi murni Roc dirancang agar sangat deterministik di berbagai target kompilasi sistem. Sistem tipe yang ketat memastikan bahwa pengembang mendapatkan seluruh jaminan properti keamanan tersebut tanpa mengorbankan performa secara signifikan.

Optimalisasi Khusus dalam Roc

Peningkatan kinerja pada roc-deflate dicapai melalui sejumlah teknik optimalisasi, termasuk teknik umum serta optimalisasi spesifik bahasa Roc. Langkah-langkah tersebut mencakup menghindari pembagian data yang tidak perlu melalui mutasi oportunistik agar nilai tetap unik.

Pengembang juga dapat memindahkan pemeriksaan batas memori (hoist bounds checks) ke luar perulangan agar pengoptimal compiler dapat menghapus pemeriksaan biaya tinggi di dalam loop. Selain itu, pembuatan tabel pencarian pada waktu kompilasi serta penggunaan aritmatika pembungkus (wrapping arithmetic) turut membantu meningkatkan efisiensi eksekusi.

Pengembangan selanjutnya akan berfokus pada persiapan rilis resmi perdana Roc versi 0.1.0 setelah delapan tahun masa pengembangan.

Mungkin Anda Suka

Tinggalkan Komentar

Alamat email tidak akan dipublikasikan. Kolom wajib ditandai *