इस पेज में बताया गया है कि Basel का इस्तेमाल करते समय, Bagel की बिल्ड परफ़ॉर्मेंस को कैसे ऑप्टिमाइज़ किया जा सकता है बार-बार.
बेज़ल का रनटाइम स्टेट
बेज़ल (बेज़ल) शुरू करने की प्रक्रिया में इंटरैक्ट करने के कई हिस्से शामिल होते हैं.
bazel
कमांड-लाइन इंटरफ़ेस (सीएलआई), एक ऐसा फ़्रंट-एंड टूल है जिसे इस्तेमाल किया जा सकता है और उपयोगकर्ता से निर्देश मिलते हैं.सीएलआई टूल से बेज़ल सर्वर चालू होता है हर अलग आउटपुट बेस के लिए. Basel सर्वर आम तौर पर स्थायी होता है, लेकिन कुछ समय के लिए इस्तेमाल में न होने पर बंद हो जाएगा ताकि संसाधनों की बर्बादी न हो.
Basel सर्वर दिए गए निर्देश के लिए, लोड करने और विश्लेषण करने के चरणों को पूरा करता है (
build
,run
,cquery
वगैरह) में, यह ज़रूरी पार्ट बनाता है चुनें. नतीजे के तौर पर मिले डेटा स्ट्रक्चर, को विश्लेषण कैश मेमोरी के हिस्से के तौर पर इस्तेमाल कर सकते हैं.Basel सर्वर कार्रवाई निष्पादन भी कर सकता है, या वह भेज सकता है कार्रवाइयों को बंद कर सकते हैं. के नतीजे ऐक्शन एक्ज़ीक्यूट को कैश मेमोरी में भी सेव किया जाता है, जैसे कि ऐक्शन कैश में (या एक्ज़िक्यूशन कैश मेमोरी, जो लोकल या रिमोट हो सकती है. साथ ही, इसे शेयर किया जा सकता है के बीच में कस्टमाइज़ करना चाहें.
Basel को शुरू करने के बाद मिले नतीजे, आउटपुट ट्री में उपलब्ध होते हैं.
बेज़ल इटरेटिव तरीके से चल रहा है
किसी सामान्य डेवलपर वर्कफ़्लो में, एक कोड बनाना (या चलाना) आम बात है
बार-बार, अक्सर बहुत ज़्यादा अंतराल पर (उदाहरण के लिए, कंपाइलेशन के दो तरीके)
गड़बड़ी या फ़ेल होने वाले टेस्ट की जांच करें). इस स्थिति में, यह ज़रूरी है कि
bazel
को बार-बार शुरू करने से ओवरहेड जितना हो सके उतना कम होता है
और बार-बार की जाने वाली कार्रवाई (जैसे, कंपाइलर को शुरू करना या टेस्ट को एक्ज़ीक्यूट करना).
इस बात को ध्यान में रखते हुए, हम बेज़ल के रनटाइम की स्थिति पर दोबारा गौर करते हैं:
विश्लेषण की कैश मेमोरी, डेटा का एक अहम हिस्सा होती है. इस तरह के मामलों में जिनका इस्तेमाल कोल्ड रन के दौरान लोडिंग और विश्लेषण के चरण में किया जाता है (यानी कि सिर्फ़ एक दौड़ में) बाद में या जब विश्लेषण की कैश मेमोरी खारिज कर दी गई हो). किसी एक सफल कोल्ड बिल्ड (जैसे कि प्रोडक्शन रिलीज़ के लिए) के लिए यह लागत है अच्छी क्वालिटी के वीडियो विज्ञापन बनाए जा सकते हैं, लेकिन बार-बार एक ही टारगेट बनाने के लिए ज़रूरी है कि होने वाले हर सवाल का जवाब देने के लिए, लागत को कम किया जा सकता है और दोहराया नहीं जा सकता है.
विश्लेषण की कैश मेमोरी में बदलाव होता रहता है. सबसे पहले, यह इन-प्रोसेस का हिस्सा है
की स्थिति में नहीं होता, इसलिए सर्वर को खोने से कैश मेमोरी मिट जाती है. हालांकि, कैश मेमोरी में सेव किए गए
भी बहुत आसानी से अमान्य हो जाता है: उदाहरण के लिए, कई bazel
कमांड लाइन फ़्लैग
कैश मेमोरी को खारिज करने का विकल्प होगा. ऐसा इसलिए होता है, क्योंकि कई सारे फ़्लैग बिल्ड पर असर डालते हैं
ग्राफ़ (उदा.
कॉन्फ़िगर करने लायक एट्रिब्यूट). कुछ फ़्लैग
बदलावों की वजह से बेज़ल सर्वर भी रीस्टार्ट हो सकता है (उदाहरण के लिए,
स्टार्टअप के विकल्प).
बिल्ड की परफ़ॉर्मेंस के लिए, कैश मेमोरी का एक अच्छा एक्ज़ीक्यूशन भी अहम होता है. एक्ज़ीक्यूशन कैश मेमोरी को डिवाइस में सेव किया जा सकता है डिस्क पर या रिमोट तरीके से. कैश को इनके बीच शेयर किया जा सकता है बेज़ेल सर्वर के साथ-साथ डेवलपर भी शामिल हैं.
विश्लेषण की कैश मेमोरी को खारिज करने से बचें
अगर विश्लेषण कैश मेमोरी को खारिज कर दिया गया था या सर्वर रीस्टार्ट किया गया. बार-बार इस्तेमाल करते समय, इनमें से किसी भी चीज़ से बचना चाहिए:
बार-बार दोहराए जाने वाले सवाल के बीच में,
bazel
फ़्लैग को बदलने का ध्यान रखें इस्तेमाल किया जा सकता है. उदाहरण के लिए,bazel build -c opt
कोbazel cquery
के साथ मिक्स करना हर कमांड को एक-दूसरे की विश्लेषण कैश मेमोरी को खारिज करने की वजह बनती है. सामान्य तौर पर, किसी विशेष वर्कफ़्लो की अवधि के लिए फ़्लैग के निश्चित सेट का उपयोग करने का प्रयास करें.Basel सर्वर को खोने से, विश्लेषण की कैश मेमोरी मिट जाती है. Basel सर्वर में कॉन्फ़िगरेशन योग्य निष्क्रिय बंद हो जाता है. आप इसे अपने baज़ेनrc फ़ाइल में अपनी ज़रूरत के हिसाब से बदलाव कर सकते हैं. स्टार्टअप पर सर्वर भी रीस्टार्ट हो गया इसलिए, अगर हो सके, तो दोबारा फ़्लैग करने से बचें.
सावधान रहें कि यदि आप दबाते है तो बेज़ेल सर्वर मर जाता है जब बेज़ल चल रहा हो, तब बार-बार Ctrl-C. अपने कारोबार के हिसाब से समय बचाना जिसकी अब ज़रूरत नहीं है, चल रहे बिल्ड में रुकावट डालते हैं. मौजूदा बोले जा रहे शब्दों को खत्म करने के लिए, ग्रेसफ़ुल तरीके से अनुरोध करने के लिए एक बार Ctrl-C दबाएं.
अगर आपको एक ही फ़ाइल फ़ोल्डर से फ़्लैग के एक से ज़्यादा सेट का इस्तेमाल करना है, तो
--output_base
के साथ स्विच किए गए, कई अलग-अलग आउटपुट बेस का इस्तेमाल करें फ़्लैग करें. हर आउटपुट बेस को अपना खुद का Basel सर्वर मिलता है.