इसके माध्यम से साझा किया गया


तेज़ परिकलन

Power Fx अभिव्यक्तियाँ शक्तिशाली हैं और आपके लिए कई पृष्ठभूमि गणनाएँ स्वचालित रूप से करती हैं। जबकि Power Fx आपके लिए कई चीजों को स्वचालित करता है, आपकी गणनाओं को यथासंभव तेजी से ठीक करना संभव है।

डेटा की पुनःप्राप्ति

स्पष्ट स्तंभ चयन का उपयोग करें

सभी नए ऐप्स के लिए स्पष्ट कॉलम चयन (ECS) सुविधा डिफ़ॉल्ट रूप से सक्षम होती है। यदि यह आपके ऐप के लिए सक्षम नहीं है, तो आपको इसे सक्षम करना चाहिए। ईसीएस स्वचालित रूप से प्राप्त कॉलमों की संख्या को घटाकर केवल उन कॉलमों तक सीमित कर देता है जो अनुप्रयोग में उपयोग किए जाते हैं। यदि ECS सक्षम नहीं है, तो हो सकता है कि आप आवश्यकता से अधिक डेटा प्राप्त कर रहे हों, जिससे प्रदर्शन प्रभावित हो सकता है। कभी-कभी, जब कोई ऐप संग्रह के माध्यम से डेटा खींचता है, तो कॉलम की मूल वंशावली या स्रोत खो सकता है। हमें नहीं पता कि इसका उपयोग हो रहा है या नहीं और हम इसे ईसीएस का उपयोग करके हटा देते हैं। आप आमतौर पर किसी संग्रह संदर्भ के बाद PowerFx अभिव्यक्ति ShowColumns का उपयोग करके या किसी नियंत्रण में इसका उपयोग करके ECS को किसी अनुपलब्ध स्तंभ के लिए कार्य करने के लिए बाध्य कर सकते हैं।

गैलरी, तालिकाओं और फ़ॉर्म पर छवियों का सावधानीपूर्वक उपयोग करें

गैलरी और तालिकाओं के लिए छवियों के थंबनेल संस्करण का उपयोग करें। Dataverse Dataverse थंबनेल छोटे होते हैं, लगभग 1 किलोबाइट के, तथा रिकार्ड के भाग के रूप में इनलाइन संग्रहीत होते हैं, तथा संग्रह दिखाने वाले नियंत्रणों पर प्रदर्शित करने के लिए उपयोगी और तेज़ होते हैं। सभी छवियों सहित अन्य सभी छवि संदर्भों के लिए अलग से कॉल की आवश्यकता होती है और उन्हें गैलरी या टेबल पर नहीं रखा जाना चाहिए। SharePoint जिन छवियों के लिए अलग से कॉल की आवश्यकता होती है, उन्हें विस्तृत प्रपत्रों पर रखें। डिफ़ॉल्ट रूप से कभी भी पूर्ण छवि न दिखाने पर विचार करें। पूर्ण विस्तृत चित्र उपयोगकर्ताओं के लिए उपयोगी और महत्वपूर्ण हो सकते हैं। हालाँकि, आप इन छवियों को उपयोगकर्ताओं के लिए एक स्पष्ट उपयोगकर्ता कार्रवाई के माध्यम से उपलब्ध करा सकते हैं, उदाहरण के लिए, एक बटन या एक अलग पृष्ठ पर नेविगेशन। SharePoint इसमें मध्यम आकार की छवियों की एक श्रृंखला है, जिनका उपयोग आप पूर्ण छवि से छोटे फॉर्म पर कर सकते हैं। Dataverse इसके केवल दो आकार हैं: थंबनेल और पूर्ण।

गणनाएँ

App.formula के साथ फ़ार्मुलों को विभाजित करें

App.formulas और नामित सूत्रों का उपयोग ऐप लोड और पेज नेविगेशन की गति में मदद कर सकता है क्योंकि यह यह तय करने की अनुमति देता है कि किसी सूत्र का मूल्यांकन कब करना है। Power Fx इसका मतलब यह है कि इसका मूल्यांकन अनिवार्य रूप से OnStart में ही करना आवश्यक नहीं है। इसके अलावा, नामित सूत्र भी आम तौर पर गति में मदद कर सकते हैं। विशेष रूप से यदि आपके पास एक लंबी स्क्रिप्ट है, तो उसे नामित सूत्रों में विभाजित करने से अधिक कुशल गणना की अनुमति मिलती है क्योंकि इससे कार्य को शेड्यूल किया जा सकता है और यह पुन: उपयोग को सक्षम बनाता है। Power Fx अधिक जानकारी के लिए, ऐप फ़ॉर्मूले देखें.

समवर्ती का उपयोग करें

सूत्रों को एक ही समय पर निष्पादित करने की अनुमति देने के लिए Concurrent फ़ंक्शन का उपयोग करें। ध्यानपूर्वक चुनें कि concurrent का प्रयोग कहां किया जाए। यह कुछ हद तक गति प्रदान कर सकता है, लेकिन यदि आप ऐसी वस्तुओं को चला रहे हैं जो एक-दूसरे पर निर्भर हैं, तो इससे टाइमिंग और थ्रॉटलिंग संबंधी समस्याएं हो सकती हैं।

महत्वपूर्ण अपडेट को नॉनब्लॉकिंग UI चरण पर स्थगित करें

डेटा स्रोत में बड़े अपडेट पूरा होने में कुछ समय लग सकता है। लेकिन उपयोगकर्ता यह उम्मीद करते हैं कि यूआई शीघ्र ही उन्हें नियंत्रण वापस दे देगा। कार्य या तो अनुक्रमिक हो सकते हैं, जहां उपयोगकर्ता द्वारा कोई अन्य कार्रवाई करने से पहले अद्यतन को समाप्त करना आवश्यक होता है, या अतुल्यकालिक हो सकते हैं (अद्यतन उपयोगकर्ता की अलग-अलग क्रियाओं को पूरा कर सकता है।)

समय लेने वाले समकालिक कार्य का एक उदाहरण किसी संगीत समारोह में सीट की पुष्टि करना है। इस तरह के अधिकांश समय लेने वाले समकालिक कार्यों के लिए, प्रगति पट्टी लगाना सामान्य बात है। यह UI वास्तव में उपयोगकर्ता को ब्लॉक करता है, लेकिन यह सुनिश्चित करता है कि अन्य UI तत्वों के अपडेट होने से पहले कार्य पूरा हो जाए। हो सकता है कि यह दृष्टिकोण आपके अनुप्रयोग के लिए काम न करे। व्यवसाय आमतौर पर लंबे अनुक्रमिक चरणों को एक स्पष्ट व्यावसायिक चरण के रूप में संभालते हैं। आपको व्यवसाय प्रक्रिया संकेत के माध्यम से अगले चरण पर जाने की मंजूरी दी जाती है। इसका एक उदाहरण अनुमोदन है। अनुमोदन शीघ्र मिल सकता है अथवा विलम्बित भी हो सकता है। यूआई में आप कई तरीकों से संकेत दे सकते हैं कि प्रक्रिया पूरी हो गई है। आप कोई बटन सक्षम कर सकते हैं, कोई संदेश दिखा सकते हैं, ई-मेल भेज सकते हैं, या UI के किसी भाग जैसे मेनू आइटम को सक्षम कर सकते हैं।

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

सिंक्रोनस कार्यों के लिए, आप अक्सर UI ब्लॉकिंग कार्यों के लिए कोड का उपयोग करेंगे। Power Apps उदाहरण के लिए, कोड तब तक प्रतीक्षा करता है जब तक उसे रिटर्न मान नहीं मिल जाता और फिर प्रगति पट्टी जारी कर देता है। इस प्रकार की स्थितियों को न्यूनतम रखना ही सर्वोत्तम है। लेकिन ऐसे कार्यों के लिए जो स्पष्ट व्यावसायिक चरण या अतुल्यकालिक कार्यों का उपयोग करते हैं, कार्य को पूरा करने के लिए बाह्य सेवा का उपयोग करना सामान्य है, जैसे कि Dataverse क्रिया, संग्रहीत प्रक्रिया, या Power Automate प्रवाह।

'ForAll' को उचित स्थान पर रखें

यदि आपके पास ForAll और collect के साथ एक अभिव्यक्ति है जो इस तरह दिखती है:

ForAll(x, Collect(y, { … }))

फिर, इसे उलट दें

Collect(y, ForAll(x, { … }))

पहले पैटर्न में, संग्रह y पर किसी भी आश्रित नियम को परिवर्तनों के बारे में सूचित किया जाता है और x के प्रत्येक पुनरावृत्ति के लिए उसका मूल्यांकन किया जाता है। दूसरे पैटर्न में, इन नियमों का मूल्यांकन केवल एक बार किया जाता है।

Gallery.AllItems के संदर्भों से बचने पर विचार करें

साथ काम करते समय Power Apps, जब तक आपको उपयोगकर्ता मानों की आवश्यकता न हो, तब तक Gallery.AllItems को संदर्भित करने से बचना सबसे अच्छा है। ऐसा इसलिए है क्योंकि हर बार AllItems को पढ़ने पर एक नई आउटपुट तालिका तैयार होती है। इसके बजाय, यदि आप केवल यह जानना चाहते हैं कि कितने आइटम लोड किए गए हैं, तो Gallery.AllItemsCount का उपयोग करें।

Gallery.TemplateSize का सावधानीपूर्वक उपयोग करें

यह सुनिश्चित करने के लिए कि लचीली-ऊंचाई वाली गैलरी सही ढंग से प्रस्तुत की जाएं, एक उचित डिफ़ॉल्ट आकार सेट करना महत्वपूर्ण है। प्रारंभ में, हम इस मान के आधार पर यथासंभव अधिक से अधिक पंक्तियों को प्रस्तुत करने का प्रयास करते हैं। यदि आप डिफ़ॉल्ट आकार को 0 पर सेट करते हैं, तो हम कुछ किनारे के मामलों को छोड़कर बाकी सब कुछ रेंडर करने का प्रयास करते हैं। यदि आप किसी सूत्र का उपयोग कर रहे हैं, तो सुनिश्चित करें कि सूत्र का न्यूनतम मान 0 हो। उदाहरण के लिए, आप Max (20, varFoo + rectBar.Height) का उपयोग कर सकते हैं। इस तरह, यदि varFoo और rectBar.Height अभी उपलब्ध नहीं हैं, तो हम कम से कम 20 का उचित मान उपयोग करते हैं।

परिवर्तनों का पता लगने से पहले एक सेकंड का विलंब होता है, जिससे आप प्रत्येक टाइपिंग के लिए परिवर्तनों का पता लगाने के बजाय टाइपिंग पूरी कर सकते हैं।