Ana içeriğe geç
Programlama

Campfire testlerinde Kotlin JVM performansı Rust ile yarıştı

Öne çıkanlar

  • Kotlin sürümü iki çekirdekli sunucuda Rust'a kıyasla yüzde 25 ila 48 oranında daha fazla istek işledi.
  • GraalVM yerel ikili derlemesi bellek tüketimini 30 ila 50 megabayt aralığına düşürdü.
  • Rust uygulamasındaki 128 bağlantılık varsayılan kuyruk sınırı yüksek eşzamanlılıkta kilitlenmelere yol açtı.

David Heinemeier Hansson tarafından farklı dillerde yeniden yazılan 37signals sohbet uygulaması Campfire için bağımsız bir Kotlin sürümü geliştirildi. Claude Code kullanılarak yaklaşık 24 saatte Rust sürümünden taşınan once-campfire-kotlin projesi, JVM ekosisteminin performans tablosundaki yerini ölçmeyi amaçladı. AMD EPYC işlemcili sunucularda yapılan testlerde JVM üzerinde çalışan Kotlin, belirli yük senaryolarında Rust ile benzer sonuçlar verdi ve bazı koşullarda daha yüksek saniye başına istek oranına ulaştı.

Karşılaştırma testleri Netty, SQLite ve Java 25 Foreign Function & Memory (FFM) API katmanları üzerinden yürütüldü. Çalışmada Rust uygulamasının ürettiği her HTTP yanıtıyla birebir bayt uyumu hedeflendi. İki çekirdekli sistem üzerinde önbelleksiz ortamda saniye başına 20 binin üzerinde istek karşılayan Kotlin JVM, Rust sürümünden daha az CPU harcadı. GraalVM ile derlenen yerel ikili sürüm ise bellek kullanımını 30 ila 50 MB seviyesine indirerek Rust'ın bellek profiline yaklaştı.

Araştırma, Rust sürümünün Tokio ve mio kaynaklı 128 bağlantılık dinleme kuyruğu sınırı sebebiyle yüksek yükte kilitlendiğini ortaya çıkardı. Sorun somaxconn çekirdek ayarına geçilerek yamalandı. Öte yandan ilk yanıt süresi, JIT ısınma ihtiyacı ve bellek tüketimi tarafında Rust belirgin avantajını korudu. Testler, saf dil kıyaslamalarından ziyade mimari optimizasyonların ve Docker loglama maliyetlerinin genel çıktıyı doğrudan belirlediğini gösterdi.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.