Android बिल्ड परफ़ॉर्मेंस

इस पेज पर, खास तौर पर 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

वर्कर्स को चालू करने से, बिल्ड की परफ़ॉर्मेंस बेहतर हो सकती है. ऐसा इसलिए, क्योंकि इनमें से हर टूल को लागू करने पर, जेवीएम के स्टार्टअप की लागत बचती है. हालांकि, इन्हें पर्सिस्टेंट रखने से, सिस्टम में मेमोरी का इस्तेमाल बढ़ जाता है.

इन ऐक्शन के लिए वर्कर्स को चालू करने के लिए, कमांड लाइन पर --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 फ़्लैग का इस्तेमाल करें या aapt2 को aapt_version पर android_binary और android_local_test पर सेट करें.

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

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