सुझाव/राय के आधार पर अपने-आप ऑप्टिमाइज़ होना (12 या उससे ज़्यादा वर्शन)

Android 12 में, Android बिल्ड सिस्टम, नेटिव Android मॉड्यूल को ऑप्टिमाइज़ करने की सुविधा देता है. इन मॉड्यूल में, ब्लूप्रिंट बिल्ड के नियम, ऑटोमैटिक फ़ीडबैक-डायरेक्टेड ऑप्टिमाइज़ेशन (AutoFDO) का इस्तेमाल करके बनाए जाते हैं. AutoFDO, सैंपलिंग पर आधारित ऑप्टिमाइज़ेशन की एक तकनीक है. AutoFDO, सिस्टम बाइनरी के रनटाइम बिहेवियर को कैप्चर करता है. इससे कंपाइलर, परफ़ॉर्मेंस को बेहतर तरीके से ऑप्टिमाइज़ कर पाते हैं. साथ ही, बाइनरी का साइज़ भी कम हो जाता है. Android, X86, X86_64, ARM, और ARM64 डिवाइसों से प्रोफ़ाइलें इकट्ठा करने की सुविधा देता है. हालांकि, इन प्रोफ़ाइलों का इस्तेमाल सभी आर्किटेक्चर में किया जा सकता है.

AutoFDO, इंस्ट्रूमेंटेशन पर आधारित प्रोफ़ाइल-गाइडेड ऑप्टिमाइज़ेशन (PGO) की जगह लेता है.

इंस्ट्रूमेंटेशन पर आधारित अन्य प्रोफ़ाइलों की तुलना में, AutoFDO के ये अतिरिक्त फ़ायदे हैं:

  • डेटा कलेक्शन में कोई रुकावट नहीं: AutoFDO प्रोफ़ाइलें, डेवलपमेंट या उपयोगकर्ता के डिवाइसों से इकट्ठा की जा सकती हैं. इसके लिए, बिल्ड के नियमों में कोई बदलाव करने की ज़रूरत नहीं होती.

  • असल इस्तेमाल के पैटर्न को दिखाना: AutoFDO, असल इस्तेमाल के पैटर्न को दिखाता है. यह मान लिया जाता है कि प्रोफ़ाइलें, उपयोगकर्ता के डिवाइसों से इकट्ठा की गई हैं. वहीं, इंस्ट्रूमेंटेशन PGO, सिर्फ़ सिंथेटिक कलेक्शन वर्कलोड को दिखाता है. आम तौर पर, ऐसा कलेक्शन वर्कलोड बनाना आसान नहीं होता जो असल इस्तेमाल के पैटर्न से पूरी तरह मेल खाता हो.

AOSP में, परफ़ॉर्मेंस के लिहाज़ से अहम ज़्यादातर प्रोजेक्ट के लिए, AutoFDO प्रोफ़ाइलें शामिल होती हैं. ये प्रोफ़ाइलें, फ़ोन और टैबलेट डिवाइसों से इकट्ठा की गई हैं. साथ ही, ये उनके सामान्य इस्तेमाल के पैटर्न को दिखाती हैं. ये प्रोफ़ाइलें, toolchain/pgo-profiles/sampling में मौजूद होती हैं. AOSP पर, AFDO डिफ़ॉल्ट रूप से चालू होता है.

ब्लूप्रिंट बिल्ड के किसी नियम के लिए, AutoFDO चालू करना

ब्लूप्रिंट बिल्ड के नियमों के लिए, AutoFDO चालू करने के लिए, शेयर की गई लाइब्रेरी या बाइनरी के नियम में afdo: true जोड़ें.

प्रोफ़ाइलें इकट्ठा करना

AOSP के साथ दी गई, पहले से बंडल की गई प्रोफ़ाइल, इन खास स्थितियों में काम नहीं करती:

  • AutoFDO के अतिरिक्त प्रोजेक्ट शामिल करना
  • स्थानीय तौर पर बदले गए कोड का मौजूद होना
  • आपके सिस्टम से जुड़े, इस्तेमाल के यूनीक पैटर्न

अगर इनमें से कोई स्थिति आपके साथ है, तो आपको डेवलपमेंट या उपयोगकर्ता के डिवाइसों से सीधे प्रोफ़ाइलें इकट्ठा करनी होंगी.

ARM डिवाइसों को AutoFDO प्रोफ़ाइलें इकट्ठा करने के लिए तैयार करने के बारे में ज़्यादा जानकारी पाने के लिए, AutoFDO के लिए ETM डेटा इकट्ठा करना लेख पढ़ें.

X86 डिवाइसों को AutoFDO प्रोफ़ाइलें इकट्ठा करने के लिए तैयार करने के बारे में ज़्यादा जानकारी पाने के लिए, AutoFDO के लिए LBR डेटा इकट्ठा करना लेख पढ़ें.

बैकग्राउंड में प्रोफ़ाइलें अपने-आप इकट्ठा करने, प्रोसेस करने, और अपलोड करने की सुविधा चालू करने के बारे में जानकारी पाने के लिए, Profcollect लेख पढ़ें.

AutoFDO प्रोफ़ाइलों का विश्लेषण करना

Android, LLVM की स्टैंडर्ड AutoFDO प्रोफ़ाइलों का इस्तेमाल करता है. AFDO प्रोफ़ाइलों को, LLVM के llvm-profdata टूल का इस्तेमाल करके पढ़ा जा सकता है. afdo_summary.sh स्क्रिप्ट (toolchain/pgo-profiles/scripts/afdo_summary.sh) AutoFDO प्रोफ़ाइल के मुताबिक, सबसे ज़्यादा बार एक्ज़ीक्यूट किए गए फ़ंक्शन अपने-आप जनरेट करती है.