इटरेशन की स्पीड ऑप्टिमाइज़ करें

समस्या की शिकायत करें सोर्स देखें

इस पेज में बताया गया है कि जब-जब बेज़ल को बार-बार चलाया जाता है, तब गेम की बिल्ड परफ़ॉर्मेंस को कैसे ऑप्टिमाइज़ किया जाए.

बेज़ल का रनटाइम स्टेट

बेज़ल (बेज़ल) शुरू करने की प्रक्रिया में इंटरैक्ट करने के कई हिस्से शामिल होते हैं.

  • bazel कमांड-लाइन इंटरफ़ेस (सीएलआई), एक ऐसा फ़्रंट-एंड टूल है जिसे इस्तेमाल किया जा सकता है. यह उपयोगकर्ता से निर्देश लेता है.

  • सीएलआई टूल, हर आउटपुट बेस के लिए बेज़ल सर्वर शुरू करता है. Basel सर्वर आम तौर पर स्थायी होता है, लेकिन कुछ समय के लिए बंद हो जाएगा, ताकि संसाधनों को बर्बाद न करें.

  • Baज़ल सर्वर, दिए गए निर्देश (build, run, cquery वगैरह) के लिए, लोड करने और विश्लेषण करने के चरणों को पूरा करता है. इसमें यह मेमोरी में बिल्ड ग्राफ़ के ज़रूरी हिस्से बनाता है. इससे बनने वाले डेटा स्ट्रक्चर को, विश्लेषण कैश मेमोरी के हिस्से के तौर पर बेज़ल सर्वर में रखा जाता है.

  • Basel सर्वर, कार्रवाई को एक्ज़ीक्यूट कर सकता है या अगर ऐसा करने के लिए सेट अप किया गया हो, तो यह रिमोट तौर पर एक्ज़ीक्यूट करने के लिए भी ऐक्शन बंद कर सकता है. ऐक्शन एक्ज़ीक्यूट करने के नतीजे कैश मेमोरी में भी सेव किए जाते हैं, जैसे कि ऐक्शन कैश (या एक्ज़िक्यूशन कैश, जो लोकल या रिमोट हो सकता है और इसे बेज़ल सर्वर के बीच शेयर किया जा सकता है).

  • Basel को शुरू करने के बाद मिले नतीजे, आउटपुट ट्री में उपलब्ध होते हैं.

बेज़ल इटरेटिव तरीके से चल रहा है

सामान्य डेवलपर वर्कफ़्लो में, कोड का एक हिस्सा बार-बार बनाना (या चलाना) आम बात है.ऐसा अक्सर बहुत ज़्यादा फ़्रीक्वेंसी पर किया जाता है. उदाहरण के लिए, कंपाइलेशन की कुछ गड़बड़ियों को ठीक करना या किसी टेस्ट सफल न होने की जांच करना. ऐसी स्थिति में, यह ज़रूरी है कि bazel को बार-बार शुरू करने से, बताई गई बार-बार की जाने वाली कार्रवाई की तुलना में कम ओवरहेड हो. उदाहरण के लिए, कंपाइलर को शुरू करना या टेस्ट को लागू करना.

इस बात को ध्यान में रखते हुए, हम बेज़ल के रनटाइम की स्थिति पर दोबारा गौर करते हैं:

विश्लेषण की कैश मेमोरी, डेटा का एक अहम हिस्सा होती है. कोल्ड रन की लोडिंग और विश्लेषण के चरण में बहुत ज़्यादा समय खर्च करना पड़ सकता है. इसका मतलब है कि बेज़ल सर्वर चालू होने के तुरंत बाद या विश्लेषण की कैश मेमोरी मिटने के बाद की एक दौड़. किसी एक सफल कोल्ड बिल्ड (जैसे कि प्रोडक्शन रिलीज़ के लिए) के लिए यह लागत खर्च करनी पड़ती है, लेकिन एक ही टारगेट को बार-बार बनाने के लिए यह ज़रूरी है कि इस लागत को कम किया जाए और उसे हर बार शुरू करने पर न दोहराया जाए.

विश्लेषण की कैश मेमोरी में बदलाव होता रहता है. पहली बात यह है कि यह Basel सर्वर की इन-प्रोसेस स्थिति का हिस्सा है, इसलिए सर्वर को खोने से कैश मेमोरी मिट जाती है. हालांकि, कैश मेमोरी भी बहुत आसानी से अमान्य हो जाती है: उदाहरण के लिए, कई bazel कमांड लाइन फ़्लैग की वजह से कैश मेमोरी खारिज हो जाती है. ऐसा इसलिए होता है, क्योंकि कई फ़्लैग बिल्ड ग्राफ़ पर असर डालते हैं. उदाहरण के लिए, कॉन्फ़िगर किए जा सकने वाले एट्रिब्यूट की वजह से होता है. कुछ फ़्लैग बदलावों की वजह से बेज़ल सर्वर रीस्टार्ट भी हो सकता है (उदाहरण के लिए, स्टार्टअप विकल्प बदलना).

बिल्ड की परफ़ॉर्मेंस के लिए, कैश मेमोरी का एक अच्छा एक्ज़ीक्यूशन भी अहम होता है. एक्ज़ीक्यूशन कैश को स्थानीय तौर पर डिस्क पर या किसी दूसरी जगह पर रखा जा सकता है. कैश मेमोरी को बेज़ल सर्वर के बीच शेयर किया जा सकता है या डेवलपर के बीच भी शेयर किया जा सकता है.

विश्लेषण की कैश मेमोरी को खारिज करने से बचें

अगर विश्लेषण कैश मेमोरी को खारिज कर दिया गया था या सर्वर को रीस्टार्ट किया गया था, तो Basel एक चेतावनी प्रिंट करेगा. बार-बार इस्तेमाल करते समय, इनमें से किसी भी चीज़ से बचना चाहिए:

  • बार-बार दोहराए जाने वाले वर्कफ़्लो के दौरान, bazel के फ़्लैग को बदलने का ध्यान रखें. उदाहरण के लिए, bazel build -c opt को bazel cquery के साथ मिक्स करने से हर कमांड, दूसरे की विश्लेषण कैश मेमोरी को खारिज कर देता है. आम तौर पर, किसी खास वर्कफ़्लो के दौरान, फ़्लैग के एक तय सेट का इस्तेमाल करने की कोशिश करें.

  • Basel सर्वर को खोने से, विश्लेषण की कैश मेमोरी मिट जाती है. Basel सर्वर का इस्तेमाल न होने पर, कॉन्फ़िगर किया जा सकने वाला समय होता है. इसके बाद, यह बंद हो जाता है. अपनी ज़रूरतों के हिसाब से, इस बार को अपनी baazrc फ़ाइल के ज़रिए कॉन्फ़िगर किया जा सकता है. स्टार्टअप फ़्लैग बदलने पर भी सर्वर रीस्टार्ट होता है. इसलिए, अगर हो सके, तो दोबारा उन फ़्लैग को बदलने से बचें.

  • सावधान रहें कि यदि बेज़ल चल रहा है, तो बार-बार Ctrl-C दबाने से बेज़ल सर्वर खत्म हो जाएगा. आप उस बिल्ड में रुकावट डाल कर समय बचाने की कोशिश कर सकते हैं जिसकी अब ज़रूरत नहीं है. बस एक बार Ctrl-C दबाकर, मौजूदा बोला जाना बंद करने का अनुरोध किया जा सकता है.

  • अगर आपको एक ही फ़ाइल फ़ोल्डर से फ़्लैग के कई सेट का इस्तेमाल करना है, तो --output_base फ़्लैग की मदद से स्विच करके, कई अलग-अलग आउटपुट बेस का इस्तेमाल करें. हर आउटपुट बेस को अपना खुद का Basel सर्वर मिलता है.