1. Ringkasan proyek dan tujuan
Eta Labs membandingkan implementasi pustaka standar C/POSIX untuk Linux dengan fokus pada fungsionalitas dan keringanan ("bloat"). Objek perbandingan adalah musl, uClibc, dietlibc, dan glibc, serta ke depannya bionic dan BSD libc juga akan ditambahkan.
2. Perbandingan penggunaan memori dan keringanan (Bloat)
musldandietlibcsangat ringan dan dapat menghasilkan berkas eksekusi yang kecil (static hello: 13k vs 662k pada glibc).glibcadalah yang paling berat dengan ukuran total.somencapai 7.9M, tetapi mencakup banyak fitur seperti iconv.- uClibc diuji dalam keadaan menyertakan banyak fitur opsional.
3. Respons terhadap kondisi kekurangan sumber daya
muslsering kali melaporkan kegagalan dengan jelas dan menanganinya tanpa penghentian abnormal.glibcdanuClibcdalam beberapa kasus melakukan abort saat memori habis atau gagal menangani pengecualian dengan baik.dietlibcmemiliki beberapa fitur yang sama sekali belum diimplementasikan, atau hanya memiliki tingkat penanganan yang sangat minim.
4. Perbandingan performa
- glibc menunjukkan performa terbaik pada operasi memori (
strchr,memset, dll.) dan I/O (putc/getc). - musl menawarkan performa yang seimbang dengan overhead rendah sehingga tetap kompetitif.
- dietlibc sangat lambat pada operasi terkait
strstr,putc/getc, danthread.
5. Stabilitas ABI dan kompatibilitas versi
musldanglibcmenyediakan stabilitas dan kompatibilitas ABI, tetapi hanyaglibcyang mendukung pengelolaan versi simbol.dietlibcdanuClibcsecara umum kurang memadai atau tidak resmi dalam hal kompatibilitas ABI dan kompatibilitas versi.
6. Algoritma dan implementasi internal
musldanglibcmenggunakan pencarian substring tingkat lanjut (twoway), regular expression berbasis DFA, dan malloc yang berfokus pada performa.dietlibcrentan dari sisi performa dan stabilitas karena memakai quicksort naif dan regex backtracking.- Algoritma pengurutan dan alokasi memori pada glibc lebih canggih, dengan
introsort,ptmalloc, dan lainnya.
7. Cakupan dukungan fitur/standar
glibcmendukung hampir semua fitur C99/C11 dan POSIX, serta memiliki cakupan luas hingga locale, iconv, dan fitur debugging.musldiimplementasikan dalam ukuran kecil sambil tetap mematuhi fitur-fitur esensial.dietlibcsebagian besar fiturnya tidak lengkap atau kurang memadai, dan kompatibilitas POSIX-nya juga rendah.
8. Dukungan arsitektur dan lingkungan build
muslmendukung secara luas sebagian besar arsitektur utama (x86, ARM, MIPS, dll.), serta mempertimbangkan hingga lingkungan non-MMU.- glibc secara tradisional memiliki dukungan paling luas dan telah didistribusikan secara luas.
dietlibchanya mendukung arsitektur minimal, serta kurang dalam portabilitas dan fleksibilitas build.
Belum ada komentar.