1 पॉइंट द्वारा GN⁺ 2023-11-06 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Go प्रोग्रामिंग भाषा का उपयोग करके उच्च-प्रदर्शन JSON parser बनाने की प्रक्रिया पर लेख
  • streaming workloads का समर्थन, encoding/json package के साथ compatibility, और allocation-रहित या सीमित API प्रदान करने को लक्ष्य बनाने वाला प्रोजेक्ट
  • JSON parsing की time complexity की व्याख्या करते हुए, यह रेखांकित करने वाला लेख कि input को प्रोसेस करने में लगने वाले समय की निचली सीमा input का आकार ही है
  • byte stream को JSON token stream में बदलने की tokenization प्रक्रिया पर लेख
  • JSON file से data पढ़ने की प्रक्रिया समझाने वाला लेख, जिसमें io.Reader के उपयोग की कठिनाइयों पर ज़ोर दिया गया है
  • bufio.Reader की तरह काम करने वाले लेकिन अधिक efficient API वाले byteReader कॉन्सेप्ट का परिचय कराते लेखक
  • किस character को token माना जाए और कौन-सा केवल whitespace है, इसकी पहचान करने वाली scanning प्रक्रिया पर लेख
  • hot path में function call से बचकर scanner की performance बेहतर करने के तरीकों पर लेखक की व्याख्या
  • token sequence वैध है या नहीं, इसकी पुष्टि करने वाली decoding प्रक्रिया पर लेख
  • methods को सीधे स्टोर करके और सीधे call करने वाले computed goto का उपयोग कर decoder की performance बेहतर की जा सकती है, ऐसा लेखक का सुझाव

1 टिप्पणियां

 
GN⁺ 2023-11-06
Hacker News राय
  • हाई-परफॉर्मेंस JSON parser बनाने पर विस्तृत गाइड देने वाला लेख
  • लेखक का प्रस्ताव है कि JSON के लिए explicit tokenization ज़रूरी नहीं है, और parsing व tokenization को एकीकृत किया जा सकता है
  • बेहतर performance के लिए लेखक tokenization और parsing में heap allocation से बचने की सिफारिश करता है
  • JSON library का चयन performance पर बड़ा असर डाल सकता है, और इसमें 3-10 गुना तक का अंतर हो सकता है
  • अगर serialization या deserialization करने वाली class compile time पर ज्ञात है, तो Jackson Java अच्छी तरह काम करता है, लेकिन लेख के अनुसार सावधानीपूर्वक coding और profiling performance को 2 गुना तक बेहतर कर सकती है
  • हाई-परफॉर्मेंस production environment के लिए लेखक Daniel Lemire के काम या उसके Go port MinIO को देखने की सिफारिश करता है
  • लेखक RapidJSON के JSON benchmark page का भी उल्लेख करता है
  • tokenization में "garbage factory" समस्या के समाधान पर चर्चा की गई है, जिसमें string की जगह byteslice से T तक के function का उपयोग शामिल है
  • लेखक एक समान approach का उल्लेख करता है जिसका उपयोग memory allocation के बिना और बहुत तेज़ GraphQL tokenizer और parser बनाने में किया गया
  • लेखक computed goto नामक एक अधिक space-efficient technique पर भी चर्चा करता है
  • लेखक का सुझाव है कि standard library को बेहतर API design के साथ सुधारा जा सकता है, लेकिन error मिलने से पहले structure को आधा भर देने वाला पूरी तरह streaming parser अव्यावहारिक है
  • लेखक इस विचार से सहमत नहीं है कि अधिकांश applications में पूरे input को memory में रखना अव्यावहारिक होगा
  • लेख Phil Pearl को धन्यवाद देता है और GitHub की Sonic library को देखने की सिफारिश करता है