1 puan yazan GN⁺ 2023-11-06 | 1 yorum | WhatsApp'ta paylaş
  • Go programlama dili kullanılarak yüksek performanslı bir JSON ayrıştırıcısı oluşturma sürecini ele alan bir yazı
  • Akış işlerini desteklemeyi, encoding/json paketiyle uyumluluğu ve tahsis yapmayan ya da sınırlı tahsisli bir API sunmayı hedefleyen bir proje
  • JSON ayrıştırmanın zaman karmaşıklığını açıklayan ve girdiyi işlemenin alt sınırının girdi boyutu olduğunu vurgulayan bir yazı
  • Bayt akışını JSON belirteç akışına dönüştüren tokenizasyon sürecini ele alan bir yazı
  • JSON dosyasından veri okuma sürecini açıklayan ve io.Reader kullanımının zorluklarını vurgulayan bir yazı
  • bufio.Reader benzeri çalışan ancak API'si daha verimli olan byteReader kavramını tanıtan yazar
  • Hangi karakterin bir belirteç, hangisinin yalnızca boşluk olduğunu ayırt eden tarama sürecini ele alan bir yazı
  • Yazarın, sıcak yolda fonksiyon çağrılarından kaçınarak tarayıcının performansını nasıl artırabileceğini açıkladığı bir yazı
  • Belirteç dizisinin geçerli olup olmadığını doğrulayan kod çözme sürecini ele alan bir yazı
  • Yazarın, metotları doğrudan saklayıp çağıran computed goto kullanımıyla kod çözücünün performansının artırılabileceğini öne sürdüğü yazı

1 yorum

 
GN⁺ 2023-11-06
Hacker News görüşleri
  • Yüksek performanslı bir JSON ayrıştırıcısı oluşturmaya dair ayrıntılı bir rehber sunan makale
  • Yazar, JSON için açık bir tokenization gerekmediğini ve ayrıştırma ile tokenization’ın birleştirilebileceğini öne sürüyor
  • Daha iyi performans için yazar, tokenization ve ayrıştırmada heap tahsisinden kaçınılmasını öneriyor
  • JSON kütüphanesi seçimi performans üzerinde büyük etki yaratabilir ve 3-10 kata kadar fark oluşabilir
  • Makaleye göre, serileştirilecek veya serileştirmesi çözülecek sınıflar derleme zamanında biliniyorsa Jackson Java iyi çalışıyor; ancak dikkatli kodlama ve profiling performansı 2 kat artırabilir
  • Yüksek performanslı üretim ortamları için yazar, Daniel Lemire’in çalışmalarına veya bunun Go’ya taşınmış hâli olan MinIO’ya bakılmasını öneriyor
  • Yazar ayrıca RapidJSON’daki JSON benchmark sayfasına da değiniyor
  • Tokenization’daki "çöp fabrikası" sorununa yönelik çözümü tartışıyor; buna string yerine bytesliceten T’ye giden bir fonksiyon kullanmak da dahil
  • Yazar, bellek tahsisi yapmayan ve çok hızlı bir GraphQL tokenization aracı ile ayrıştırıcısı oluşturmak için kullanılan benzer bir yaklaşımdan da söz ediyor
  • Yazar, computed goto adlı daha alan verimli bir tekniği tartışıyor
  • Yazar, standart kütüphanenin daha iyi API tasarımıyla iyileştirilebileceğini öne sürüyor; ancak hata bulunmadan önce yapıyı yarısına kadar dolduran tamamen streaming bir ayrıştırıcı gerçekçi değil
  • Yazar, çoğu uygulamada tüm girdinin bellekte bulunacağını varsaymanın gerçekçi olmadığı fikrine katılmıyor
  • Makale, Phil Pearl’e teşekkür ediyor ve GitHub’daki Sonic kütüphanesine bakılmasını öneriyor