इस पेज पर, खास तौर पर Android ऐप्लिकेशन के लिए, बिल्ड की परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के बारे में जानकारी दी गई है. Bazel की मदद से, सामान्य तौर पर बिल्ड की परफ़ॉर्मेंस को ऑप्टिमाइज़ करने के लिए, परफ़ॉर्मेंस को ऑप्टिमाइज़ करना लेख पढ़ें.
सुझाए गए फ़्लैग
फ़्लैग, bazelrc
कॉन्फ़िगरेशन सिंटैक्स में होते हैं. इसलिए, इन्हें सीधे bazelrc
फ़ाइल में चिपकाया जा सकता है और कमांड लाइन पर --config=<configuration_name>
के साथ इस्तेमाल किया जा सकता है.
परफ़ॉर्मेंस की प्रोफ़ाइल बनाना
Bazel, डिफ़ॉल्ट रूप से JSON ट्रेस प्रोफ़ाइल को Bazel के आउटपुट बेस में, command.profile.gz
नाम की फ़ाइल में लिखता है.
प्रोफ़ाइल को पढ़ने और उससे इंटरैक्ट करने का तरीका जानने के लिए, JSON प्रोफ़ाइल का दस्तावेज़ देखें.
Android बिल्ड ऐक्शन के लिए, लगातार काम करने वाले वर्कर्स.
Android बिल्ड ऐक्शन के सबसेट में, पर्सिस्टेंट वर्कर के लिए सहायता मिलती है.
इन कार्रवाइयों के लिए, इन मेमोनिक का इस्तेमाल किया जा सकता है:
- DexBuilder
- Javac
- Desugar
- AaptPackage
- AndroidResourceParser
- AndroidResourceValidator
- AndroidResourceCompiler
- RClassGenerator
- AndroidResourceLink
- AndroidAapt2
- AndroidAssetMerger
- AndroidResourceMerger
- AndroidCompiledResourceMerger
वर्कर्स चालू करने से, इनमें से हर टूल को शुरू करने के लिए JVM के स्टार्टअप की लागत कम हो जाती है. इससे बिल्ड की परफ़ॉर्मेंस बेहतर हो सकती है. हालांकि, इन टूल को सेव करने से सिस्टम में मेमोरी का इस्तेमाल बढ़ जाता है.
इन कार्रवाइयों के लिए वर्कर्स को चालू करने के लिए, कमांड लाइन पर --config=android_workers
के साथ ये फ़्लैग लागू करें:
build:android_workers --strategy=DexBuilder=worker
build:android_workers --strategy=Javac=worker
build:android_workers --strategy=Desugar=worker
# A wrapper flag for these resource processing actions:
# - AndroidResourceParser
# - AndroidResourceValidator
# - AndroidResourceCompiler
# - RClassGenerator
# - AndroidResourceLink
# - AndroidAapt2
# - AndroidAssetMerger
# - AndroidResourceMerger
# - AndroidCompiledResourceMerger
build:android_workers --persistent_android_resource_processor
हर ऐक्शन के लिए, डिफ़ॉल्ट रूप से बनाए जाने वाले पर्सिस्टेंट वर्कर्स की संख्या 4
होती है. हमने हर ऐक्शन के इंस्टेंस की संख्या को 1
या 2
पर सेट करके, बिल्ड की बेहतर परफ़ॉर्मेंस को मेज़र किया है. हालांकि, यह इस बात पर निर्भर करता है कि Bazel किस सिस्टम पर चल रहा है और कौनसा प्रोजेक्ट बनाया जा रहा है.
किसी कार्रवाई के इंस्टेंस की संख्या को सीमित करने के लिए, ये फ़्लैग लागू करें:
build:android_workers --worker_max_instances=DexBuilder=2
build:android_workers --worker_max_instances=Javac=2
build:android_workers --worker_max_instances=Desugar=2
build:android_workers --worker_max_instances=AaptPackage=2
# .. and so on for each action you're interested in.
AAPT2 का इस्तेमाल करना
aapt2
में aapt
के मुकाबले परफ़ॉर्मेंस बेहतर है. साथ ही, इससे छोटे APK भी बनते हैं. aapt2
का इस्तेमाल करने के लिए, --android_aapt=aapt2
फ़्लैग का इस्तेमाल करें या android_binary
और android_local_test
पर aapt_version
पर aapt2
सेट करें.
एसएसडी ऑप्टिमाइज़ेशन
--experimental_multi_threaded_digest
फ़्लैग, एसएसडी पर डाइजेस्ट कैलकुलेशन को ऑप्टिमाइज़ करने के लिए मददगार है.