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 पर व्यापक रूप से सकारात्मक प्रभाव डाल सकता है।
अभी कोई टिप्पणी नहीं है.