में JSON.stringify आउटपुट को स्ट्रीमिंग/पिपिंग करना मेरे पास एक परिदृश्य है जहां मुझे अपने नोड.जेएस/एक्सप्रेस रीस्टफुल एपीआई से जेएसओएन स्ट्रिंग में परिवर्तित एक बहुत बड़ी वस्तु वापस करने की आवश्यकता है।नोड.जेएस/एक्सप्रेस
res.end(JSON.stringify(obj));
हालांकि, यह अच्छी तरह से स्केल नहीं दिखता है। विशेष रूप से, यह 1-2 परीक्षणों के साथ मेरी परीक्षण मशीन पर बहुत अच्छा काम करता है, लेकिन मुझे संदेह है कि यह ऑपरेशन CPU & मेमोरी उपयोग को मार सकता है जब कई क्लाइंट बड़े JSON ऑब्जेक्ट्स को एक साथ अनुरोध कर रहे हैं।
मैंने एसिंक जेएसओएन लाइब्रेरी की तलाश में चारों ओर पोक किया है, लेकिन the only one I found में कोई समस्या है (विशेष रूप से, मुझे एक [रेंज एरर] मिलता है)। इतना ही नहीं, लेकिन यह एक बड़े हिस्से में स्ट्रिंग देता है (उदाहरण के लिए, कॉलबैक को पूरी स्ट्रिंग के साथ एक बार बुलाया जाता है, जिसका अर्थ है कि स्मृति पदचिह्न कम नहीं होता है)।
जो मैं वास्तव में चाहता हूं वह JSON.stringify फ़ंक्शन का एक पूरी तरह से असीमित पाइपिंग/स्ट्रीमिंग संस्करण है, जैसे कि यह डेटा लिखता है क्योंकि यह सीधे स्ट्रीम में पैक होता है ... इस प्रकार मुझे स्मृति पदचिह्न दोनों से बचाता है, और इससे भी एक तुल्यकालिक फैशन में सीपीयू का उपभोग।
आप एक स्ट्रीम बनाने, भाप में स्ट्रिंग के रूप में वस्तु लिखते हैं, और अंत में सिर्फ पाइप के लिए धारा रेस। – wayne