2 puan yazan GN⁺ 2024-08-25 | Henüz yorum yok. | WhatsApp'ta paylaş

serde_json performans iyileştirme deneyimi paylaşımı

  • Giriş
    • Son dönemde yapılan performans çalışmalarıyla serde_json dize işleme hızı %20 artırıldı.
    • Rust'ın serileştirme ve serileştirmeyi geri alma çerçevesi olan serde ile JSON işleme için serde_json kullanılıyor.
    • Performans iyileştirmeleri sayesinde ekosistemin genelinde fayda sağlanabiliyor.

Başlangıç noktası

  • #[iex] kütüphanesi üzerinde çalışma
    • Performans kıyaslamalarında serde ve serde_json kullanıldı.
    • Performansın kritik olduğu kodda şüpheli kararlar tespit edildi.
    • Hata yolu, başarı yoluna göre 2 kattan daha yavaştı.

Sorunun çözümü

  • Hata yolunun optimize edilmesi
    • position_of_index fonksiyonu darboğaza neden oluyordu.
    • Dize aramasını optimize etmek için memchr crate'i kullanıldı.
    • Performans iyileştirme sonucu: hata yolunun hızı artırıldı.

Ek optimizasyonlar

  • Dize ayrıştırma optimizasyonu
    • memchr2 fonksiyonunu kullanma denemesi başarısız oldu.
    • Kontrol karakteri aramasını optimize etmek için SWAR (register içi SIMD) tekniği kullanıldı.
    • Kısa dizelerdeki performans düşüşü sorunu çözüldü.

Unicode işleme

  • Unicode ayrıştırma optimizasyonu
    • Onaltılık çözümleme performansı iyileştirildi.
    • Verimli çözümleme için HEX tablosu kullanıldı.
    • Performans iyileştirme sonucu: JSON olarak kodlanmış War and Peace'in ayrıştırma hızı %21 arttı.

Nihai sonuç

  • UTF-8 kodlama optimizasyonu
    • char::encode_utf8 fonksiyonu yerine doğrudan UTF-8 kodlama uygulandı.
    • Performans iyileştirme sonucu: War and Peace ayrıştırma hızı ek olarak %9 arttı.

GN⁺ özeti

  • Bu yazı, Rust ekosisteminde yaygın olarak kullanılan serde_json'un performansını %20 artırma deneyimini paylaşıyor.
  • Performans optimizasyonu sürecinde çeşitli teknikler ve sorun çözme yöntemleri ele alınıyor.
  • Unicode ve dize ayrıştırma optimizasyonları, JSON işleme performansını önemli ölçüde artırıyor.
  • Bu yazı, performans optimizasyonuyla ilgilenen geliştiriciler için faydalı ve Rust ekosisteminin geneli üzerinde olumlu etki yaratacak.

Henüz yorum yok.

Henüz yorum yok.