serde_json परफ़ॉर्मेंस सुधार का अनुभव साझा

  • परिचय
    • हाल के परफ़ॉर्मेंस कार्य के ज़रिए serde_json की स्ट्रिंग प्रोसेसिंग गति में 20% सुधार किया गया।
    • Rust के serialization और deserialization framework serde तथा JSON प्रोसेसिंग के लिए serde_json का उपयोग किया गया।
    • इस परफ़ॉर्मेंस सुधार से पूरे ecosystem में लाभ मिल सकता है।

शुरुआती बिंदु

  • #[iex] लाइब्रेरी पर काम
    • परफ़ॉर्मेंस benchmark के लिए serde और serde_json का उपयोग किया गया।
    • परफ़ॉर्मेंस-क्रिटिकल कोड में कुछ संदिग्ध निर्णय पाए गए।
    • error path, success path की तुलना में 2 गुना से भी अधिक धीमा था।

समस्या का समाधान

  • error path optimization
    • position_of_index फ़ंक्शन bottleneck पैदा कर रहा था।
    • स्ट्रिंग सर्च को optimize करने के लिए memchr crate का उपयोग किया गया।
    • परफ़ॉर्मेंस सुधार का नतीजा: error path की गति बेहतर हुई।

अतिरिक्त optimization

  • स्ट्रिंग parsing optimization
    • memchr2 फ़ंक्शन के उपयोग की कोशिश असफल रही।
    • SWAR (register के भीतर SIMD) तकनीक का उपयोग कर control character search को optimize किया गया।
    • छोटी स्ट्रिंग्स में परफ़ॉर्मेंस गिरने की समस्या का समाधान किया गया।

Unicode प्रोसेसिंग

  • Unicode parsing optimization
    • hexadecimal decoding की परफ़ॉर्मेंस में सुधार किया गया।
    • कुशल decoding लागू करने के लिए HEX table का उपयोग किया गया।
    • परफ़ॉर्मेंस सुधार का नतीजा: JSON-encoded War and Peace की parsing गति 21% बढ़ गई।

अंतिम परिणाम

  • UTF-8 encoding optimization
    • char::encode_utf8 फ़ंक्शन के बजाय सीधे UTF-8 encoding को implement किया गया।
    • परफ़ॉर्मेंस सुधार का नतीजा: War and Peace parsing गति में अतिरिक्त 9% सुधार हुआ।

GN⁺ का सार

  • यह लेख Rust ecosystem में व्यापक रूप से उपयोग होने वाले serde_json की परफ़ॉर्मेंस को 20% बेहतर बनाने का अनुभव साझा करता है।
  • परफ़ॉर्मेंस optimization की प्रक्रिया में विभिन्न तकनीकों और समस्या-समाधान के तरीकों को शामिल किया गया है।
  • Unicode और स्ट्रिंग parsing optimization ने JSON प्रोसेसिंग परफ़ॉर्मेंस को काफ़ी बेहतर बनाया।
  • यह लेख परफ़ॉर्मेंस optimization में रुचि रखने वाले डेवलपर्स के लिए उपयोगी है और Rust ecosystem पर व्यापक रूप से सकारात्मक प्रभाव डाल सकता है।

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.