TypeScript कोड का प्रोफाइलिंग: शुरुआती लोगों के लिए अड़चनें ढूँढना

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: प्रदर्शन के लिए TypeScript प्रोफाइलिंग क्यों महत्वपूर्ण है

\n

जब आप TypeScript में कोई एप्लिकेशन लिखते हैं, तो यह छोटे डेटा पर तेज़ी से काम कर सकता है, लेकिन प्रोजेक्ट बढ़ने पर अड़चनें दिखाई देने लगती हैं — कोड के वे हिस्से जो निष्पादन को धीमा कर देते हैं। प्रोफाइलिंग इन समस्या वाली जगहों को खोजने और यह समझने में मदद करती है कि सबसे अधिक समय कहाँ खर्च हो रहा है।

\n

इस लेख में, हम जानेंगे कि ब्राउज़र और Node.js के अंतर्निहित टूल का उपयोग करके TypeScript कोड को कैसे प्रोफाइल किया जाए। आप सीखेंगे कि धीमे फंक्शन कैसे खोजें, कॉल स्टैक का विश्लेषण कैसे करें और महत्वपूर्ण भागों को कैसे अनुकूलित करें।

\n

यह लेख शुरुआती डेवलपर्स के लिए है जो TypeScript की मूल बातों से पहले से परिचित हैं और अपने एप्लिकेशन के प्रदर्शन में सुधार करना चाहते हैं।

\n\n

प्रोफाइलिंग की मूल अवधारणाएँ

\n

प्रोफाइलिंग यह डेटा एकत्र करने की प्रक्रिया है कि प्रोग्राम कैसे निष्पादित होता है: फंक्शन कितना समय लेते हैं, उन्हें कितनी बार कॉल किया जाता है, कौन से संसाधन खपत होते हैं।

\n

TypeScript के संदर्भ में, कुछ प्रमुख मीट्रिक को समझना महत्वपूर्ण है:

\n
    \n
  • निष्पादन समय — प्रत्येक फंक्शन कितने मिलीसेकंड लेता है।
  • \n
  • कॉल की संख्या — फंक्शन को कितनी बार कॉल किया जाता है।
  • \n
  • मेमोरी — कितनी मेमोरी आवंटित और मुक्त की जाती है।
  • \n
  • कॉल स्टैक — फंक्शन कॉल का क्रम।
  • \n
\n

TypeScript कोड को प्रोफाइल करने के लिए, आप ब्राउज़र टूल (Chrome DevTools) और Node.js उपयोगिताओं (जैसे --inspect या clinic.js) दोनों का उपयोग कर सकते हैं।

\n\n

TypeScript प्रोफाइलिंग के लिए उपकरण

\n

क्लाइंट कोड के लिए Chrome DevTools

\n

यदि आपका TypeScript एप्लिकेशन ब्राउज़र में चलता है, तो सबसे अच्छा उपकरण अंतर्निहित Chrome DevTools है। Performance टैब खोलें और रिकॉर्ड बटन दबाएँ। पेज पर कोई क्रिया करें, रिकॉर्डिंग रोकें और टाइमलाइन प्राप्त करें।

\n

विश्लेषण का उदाहरण: आप देखते हैं कि फंक्शन processData 300 मिलीसेकंड ले रहा है। यह अनुकूलन का संकेत है।

\n\n

Node.js और अंतर्निहित प्रोफाइलर

\n

सर्वर-साइड TypeScript कोड (Node.js) के लिए, --inspect या --prof फ्लैग का उपयोग करें। उदाहरण के लिए:

\n
node --inspect dist/app.js
\n

फिर ब्राउज़र में chrome://inspect खोलें और प्रक्रिया से कनेक्ट करें। आपको सर्वर कोड के लिए भी वही DevTools क्षमताएँ मिलेंगी।

\n\n

clinic.js — Node.js के लिए एक सरल उपयोगिता

\n

clinic.js को वैश्विक रूप से स्थापित करें:

\n
npm install -g clinic
\n

प्रोफाइलिंग शुरू करें:

\n
clinic doctor -- node dist/app.js
\n

यह उपयोगिता सिफारिशों के साथ एक दृश्य रिपोर्ट दिखाएगी।

\n\n

व्यवहार में अड़चनें खोजना

\n

उदाहरण 1: धीमी ऐरे सॉर्टिंग

\n

मान लीजिए कि आपके पास बड़ी ऑब्जेक्ट ऐरे को सॉर्ट करने का एक फंक्शन है:

\n
interface User {\n    id: number;\n    name: string;\n    age: number;\n}\n\nfunction sortUsers(users: User[]): User[] {\n    return users.sort((a, b) => {\n        // धीमी स्ट्रिंग तुलना\n        const nameA = a.name.toLowerCase();\n        const nameB = b.name.toLowerCase();\n        if (nameA < nameB) return -1;\n        if (nameA > nameB) return 1;\n        return 0;\n    });\n}
\n

प्रोफाइलिंग करते समय, आप देखेंगे कि प्रत्येक तुलना के लिए toLowerCase() कॉल किया जा रहा है, और ये तुलनाएँ O(n log n) हो सकती हैं। अड़चन स्ट्रिंग का बार-बार रूपांतरण है।

\n

अनुकूलन: स्ट्रिंग को पहले से रूपांतरित करें:

\n
function sortUsersOptimized(users: User[]): User[] {\n    return users\n        .map(user => ({\n            ...user,\n            _lowerName: user.name.toLowerCase()\n        }))\n        .sort((a, b) => {\n            if (a._lowerName < b._lowerName) return -1;\n            if (a._lowerName > b._lowerName) return 1;\n            return 0;\n                

ब्लॉग

पुस्तक अनुशंसाएँ