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.