How to steps to super speedy JavaScript

How to steps to super speedy JavaScript

पहली नज़र में, समानांतर प्रसंस्करण एक मुक्त दोपहर के भोजन के निमंत्रण की तरह लगता है। मल्टी-कोर सीपीयू का अधिक कुशलता से उपयोग करने में सक्षम होने के कारण आपके कोड को काफी तेज करना चाहिए।

वास्तविक अनुभव बताता है कि यह हमेशा ऐसा नहीं होता है, कुछ समस्याएं समानांतर नहीं हो सकती हैं। समानांतर संचालन एकल-अक्ष मशीनों में पूरी तरह से नई समस्याओं का कारण नहीं बनता है।

सिद्धांत रूप में, एक समानांतर कोड को कार्यों के दो समूहों में विभाजित किया जा सकता है।

पहला समूह क्लासिक गति को बढ़ावा देने वाला है – यदि आपका कार्यक्रम 3,000 छवियों तक स्क्रीन करना है, तो इसे अलग करने का मतलब है कि एक बार में अधिक छवियों को संसाधित किया जा सकता है। हालाँकि यह निश्चित रूप से सहायक है। लेकिन रोजमर्रा के वेब विकास में ऐसा काम बहुत कम पाया जाता है।

समानांतर कार्यों का सबसे आम रूप समय लेने वाले कार्यों को करना है जो कि अधिक सीपीयू समय की आवश्यकता नहीं है।

इसके लिए एक अच्छा उदाहरण एक डाउनलोड या किसी प्रकार के डिवाइस इनपुट की प्रतीक्षा कर रहा है: यदि समानांतर में किया जाता है, तो शेष जीयूआई को अवरुद्ध नहीं करना पड़ता है।

ऐसा इसलिए है क्योंकि उपयोगकर्ताओं को अक्सर यह समझने में परेशानी होती है कि “बटन पर क्लिक क्यों नहीं किया” उपयोगकर्ता को अधिक संतुष्ट करता है, भले ही वास्तविक गति में वृद्धि न हो।

यदि आपको होशियार लिखने में मदद करने के लिए नए संसाधनों की आवश्यकता है, तो 2019 के सर्वश्रेष्ठ वेब डिज़ाइन टूल के लिए हमारे गाइड की जांच करें।

01. सक्रिय संचालन

हमें एक पसंदीदा से एक छोटे से उदाहरण के साथ शुरू करते हैं: सेटइंटरवल फ़ंक्शन एक फ़ंक्शन संदर्भ लेता है और मिलीसेकंड में दिए गए संख्यात्मक मान। उसके बाद, फ़ंक्शन जब भी देरी टाइमर समाप्त हो जाएगा, तो रुक-रुक कर शुरू होगा।

02. पतन के लिए तैयार रहें

स्लीप () फ़ंक्शन का उपयोग करके हमें नींद के मॉड्यूल को एक स्थानीय एनपीएम प्रोजेक्ट में लोड करने की आवश्यकता होती है, जो ऑपरेटिंग सिस्टम के स्लीप लाइब्रेरी के लिए एक इंटरफ़ेस के रूप में कार्य करता है – तैनाती के दौरान आपके संकलक पैकेज पर कोई संदेह नहीं है। क्या वर्कस्टेशन चलेगा?

03. मल्टीटास्किंग का खतरा

इस कार्यक्रम को चलाने के दौरान, आप स्वयं को उसी परिणाम से सामना करेंगे जो इस प्रक्रिया के साथ दिखाया गया है। जाहिर है हमारे कार्यकर्ताओं को कभी नहीं बुलाया गया था – सेट अंतराल फ़ंक्शन के साथ कुछ गड़बड़ है।

04. मल्टीटास्किंग का जोखिम, भाग 2

आधुनिक ब्राउज़र एक जावास्क्रिप्ट थ्रेड के साथ प्रत्येक टैब प्रदान करते हैं। हमारे लूप पर एक सावधानी से पता चलता है कि इसका कोई अंत नहीं है।

इसका मतलब यह है कि यह हमेशा के लिए चलेगा और इसमें कभी भी नियंत्रण तिथि नहीं होगी क्योंकि संदेश के साथ setInterval () काम करता है, पेलोड नहीं कहा जाएगा क्योंकि संदेश हैंडलर चलने से अवरुद्ध है।

05. उत्पीड़कों पर ध्यान दें

Flavio Copes ब्लॉग में समस्या को रेखांकित करने वाला एक बहुत ही आकर्षक कोड है। जब चलाया जाता है, तो यह छवि में दिखाए गए परिणामों का उत्पादन करता है क्योंकि संदेश कतार को तब तक अवरुद्ध किया जाता है जब तक कि फू () ने मुख्य धागे का नियंत्रण नहीं दिया है।

06. सबसे फैल रहा है

चूंकि बेस ऑपरेटिंग सिस्टम प्री-मल्टीटास्क कर सकता है, आइए हम WebWorkers नामक समर्पित API के माध्यम से थ्रेड्स फैलाकर इसकी क्षमताओं का लाभ उठाते हैं, जो व्यापक रूप से समर्थित है। इस चरण के साथ वाली आकृति वर्तमान सुविधाओं की सूची दिखाती है।

07. एक विशेष फ़ाइल बनाएँ

WebWorkers को फ़ंक्शन पेलोड के साथ आरंभ नहीं किया जा सकता है। लेकिन कोड के साथ एक नई फ़ाइल जिसे एक थ्रेड में चलाने की आवश्यकता है। हमारे उदाहरण के मामले में example7thread.js वह सामग्री है जिसे इस चरण के साथ दिखाया गया है।

08. श्रमिक

हमारे कर्मचारी प्राइम टाइम के लिए तैयार हैं। Node.JS रनटाइम की विशिष्टता हमें एक श्रमसाध्य थ्रेड मॉड्यूल को शामिल करने और इसे एक रिश्तेदार पथ में पारित करने के लिए मजबूर करती है – ब्राउज़र में नहीं मिली समस्या। इसके अलावा, खो जाने की शुरुआत () कॉल के बारे में संदेह न करें, क्योंकि उदाहरण के ऑनलाइन होने पर वेब कर्मचारी बंद हो जाएगा।

09. … और इसके परिणामों को समझें

संदेश भेजने के लिए अक्सर रनटाइम और बाकी ऑपरेटिंग सिस्टम के बीच कुछ इंटरैक्शन की आवश्यकता होती है। अफसोस की बात है कि हमारा कभी न खत्म होने वाला लूप इस प्रक्रिया को अवरुद्ध करता है, जिसका अर्थ है कि केवल एक संदेश “बड़े स्टाल” से पहले दिखाई देता है।

10. मास्क लगाएं

एक अन्य प्रयोग में दोनों कंस्ट्रक्टर कॉल के बाद एक खाली लूप रखना शामिल है। इस स्थिति में, थ्रेड प्रारंभ नहीं होगा – रन संदेश ऑपरेटिंग सिस्टम तक नहीं पहुंचेगा।

11. अंतर-प्रक्रिया संचार

जबकि अंतहीन लूपिंग श्रमिकों को समस्या होगी, जैसा कि ऊपर दिखाया गया है। लेकिन दिनचर्या एक दूसरे के साथ संवाद कर सकती है। यह मैसेजिंग इंटरफ़ेस के माध्यम से किया जाता है – इसे एक ऐसी विशेषता के रूप में सोचें जो आपको थ्रेड सीमाओं के पार प्रेषक से प्राप्तकर्ता तक संदेश ऑब्जेक्ट्स को पारित करने की अनुमति देता है।

12. क्यों एक संदेश भेजें

थ्रेड को थ्रेडली सिंक्रोनाइज़ करने में सक्षम होने के लाभ के अलावा (और ‘टकराव’ के जोखिम को कम करने के लिए, जिसे रेस की स्थिति के रूप में भी जाना जाता है), मुख्य थ्रेड डोम के साथ बातचीत करने के लिए केवल एक ही तरीका है जिसे बनाने के लिए विधि बोझिल है। एक धागा-सुरक्षित GUI स्टैक।

Leave a Comment

Your email address will not be published.