Java dünyasında HotSpot JIT derleyicisi, uzun süredir performansın altın standardı olarak kabul edilir. Ancak Codename One ekibi, ParparVM adlı AOT (Ahead-of-Time) derleyicilerini optimize ederek, on benchmarklık bir test setinde HotSpot'u geomean olarak %100 pariteye (1.00x) ulaştırdı. Hatta altı benchmarkta HotSpot'u geride bıraktılar. Bu başarı, "hile" olarak nitelendirilebilecek bazı taktiklerle elde edildi, ancak benchmark sonuçları bit-identik checksumlarla doğrulandı. Yani gerçek bir performans artışı söz konusu.
ParparVM, iOS ve diğer platformlar için Java bytecode'unu C'ye derleyen bir AOT VM'dir. Başlangıçta basitlik ve güvenilirlik hedeflenmişti; ancak masaüstü portlarıyla birlikte daha ağır iş yükleri ve doğrudan HotSpot karşılaştırmaları gündeme geldi. İlk ölçümlerde ParparVM, ısınmış Java 25'e kıyasla 4.21 kat daha yavaştı. Özellikle hashMapChurn benchmarkında 36.2 kat, stringBuilding'de 22.7 kat ve objectAllocation'da 19.6 kat gibi vahim farklar vardı. Bu durum, ekibi köklü optimizasyonlara yöneltti.
Optimizasyonların temelinde sayfa tabanlı bir bellek yöneticisi, "fakir adamın Project Valhalla"sı (değer tipleri taklidi) ve Clang derleyicisinin daha verimli kod üretmesini sağlayan kod üretimi iyileştirmeleri yer alıyor. Ayrıca, bellek yönetiminde devrim niteliğinde bir hata düzeltildi: tahsis sayacının 32-bit olması, gigabyte seviyesindeki iş yüklerinde sayaç negatife dönüyor ve devasa bellek zirvelerine yol açıyordu. Bu düzeltme ile bellek kullanımı 1.4-2.1 GB'den 290-390 MB'a düştü.
Performans kazanımları sadece hızla sınırlı değil. Bellek ayak izi de önemli ölçüde iyileşti: binary boyutu sadece %3.8 artarken, boş bir uygulamanın bellek tabanı 2.2 MB'den 2.4 MB'a yükseldi (HotSpot'un ~40 MB'ına kıyasla). Tepe bellek kullanımı ise 1.4-2.1 GB'den 290-390 MB'a geriledi. Bu, özellikle mobil ve gömülü cihazlar için kritik bir iyileştirme.
Detaylar ve Etkileri
Ancak her şey mükemmel değil. Bazı benchmarklarda HotSpot hala önde: recursion (1.60x) ve objectAllocation (1.19x) gibi testlerde ParparVM geride kaldı. Bu, HotSpot'un JIT derleme ve profil yönelimli optimizasyonlarının hala bazı senaryolarda üstün olduğunu gösteriyor. Yine de, geomean %100 parite, AOT derlemenin potansiyelini kanıtlıyor.
Bu optimizasyonlar, Codename One kullanıcıları için büyük bir güncelleme anlamına geliyor. Ancak derin değişiklikler içerdiği için, kararlılık riski taşıyor. Ekip, her commit'te bit-identik çıktı ve 63 test hattı ile doğrulama yaptı. Yine de, bir sorunla karşılaşılırsa önceki sürüme dönmek için versiyonlu yapılar öneriliyor. Performans ve bellek optimizasyonları, Codename One'ı Java tabanlı mobil ve masaüstü uygulamalar için daha cazip bir seçenek haline getiriyor.
Kaynak: dev.to