1. Proje özeti ve amacı
Eta Labs, Linux için C/POSIX standart kütüphane uygulamalarını işlevsellik ve hafiflik ("bloat") odağında karşılaştırdı. Karşılaştırmaya musl, uClibc, dietlibc ve glibc dahil edildi; ileride bionic ve BSD libc'lerin de eklenmesi planlanıyor.
2. Bellek kullanımı ve hafiflik karşılaştırması (Bloat)
muslvedietlibcçok hafiftir ve çok küçük çalıştırılabilir dosyalar üretebilir (static hello: 13k, glibc'de ise 662k).glibc, toplam.soboyutunun 7.9M'ye ulaşmasıyla en ağır seçenektir, ancak iconv gibi çok sayıda özellik içerir.- uClibc, çok sayıda isteğe bağlı özellik etkin durumdayken test edildi.
3. Kaynak yetersizliği durumlarına tepki
musl, hataları açık biçimde bildirir ve çoğu durumda anormal sonlanma olmadan durumu işler.glibcveuClibc, bellek yetersizliğinde abort edebilir veya istisnaları doğru şekilde işleyemeyebilir.dietlibc'de bazı işlevler hiç uygulanmamıştır ya da işleme düzeyi çok zayıftır.
4. Performans karşılaştırması
- glibc, bellek işlemlerinde (
strchr,memsetvb.) ve I/O'da (putc/getc) en iyi performansı gösterir. - musl, dengeli performans ve düşük overhead sunarak rekabetçi bir yapı sergiler.
- dietlibc,
strstr,putc/getcvethreadile ilgili işlemlerde ezici biçimde yavaştır.
5. ABI kararlılığı ve sürüm uyumluluğu
muslveglibc, ABI kararlılığı ve uyumluluğu sağlar; ancak sembol sürümlemeyi yalnızcaglibcdestekler.dietlibcveuClibc, genel olarak ABI uyumluluğu ve sürüm uyumluluğu açısından yetersizdir ya da bunu gayriresmî biçimde sunar.
6. Algoritmalar ve iç uygulama
muslveglibc, gelişmiş substring arama (twoway), DFA tabanlı düzenli ifadeler ve performans odaklı malloc kullanır.dietlibc, naive quicksort ve backtracking regex gibi yaklaşımlar nedeniyle performans ve kararlılık açısından zayıftır.- Sıralama ve bellek ayırma algoritmaları tarafında glibc,
introsort,ptmallocgibi daha gelişmiş teknikler kullanır.
7. Özellik/standart destek kapsamı
glibc, neredeyse tüm C99/C11 ve POSIX özelliklerini destekler; locale, iconv ve hata ayıklama işlevlerine kadar geniş bir kapsama sahiptir.musl, gerekli işlevlere uyarken bunu küçük boyutlu bir uygulamayla gerçekleştirir.dietlibc'de çoğu özellik eksik, yarım kalmış ya da yetersizdir; POSIX uyumluluğu da düşüktür.
8. Mimari ve build ortamı desteği
musl, başlıca mimarilerin çoğunu (x86, ARM, MIPS vb.) geniş biçimde destekler ve non-MMU ortamlarını da dikkate alır.- glibc, geleneksel olarak en geniş desteği sunar ve dağıtımı yaygındır.
dietlibc, yalnızca asgari sayıda mimariyi destekler; taşınabilirlik ve build esnekliği düşüktür.
Henüz yorum yok.