ஆண்ட்ராய்டு ஆப் தொடக்கத்திற்கான (Startup) ப்ரொஃபைல் வழிகாட்டியிலான உகப்பாக்கம் (Profile-Guided Optimization)

எங்களது ஆண்ட்ராய்டு cold start நேரத்தை 1.2 வினாடிகளிலிருந்து 380ms ஆகக் குறைத்துள்ளோம்.

பெரும்பாலான செயலிகள் முதல் முறை இயங்கும்போது மிக மெதுவான கம்பைலேஷன் (compilation) முறையில் இயங்குகின்றன. ஒரு பயனர் உங்கள் செயலியை முதன்முதலில் நிறுவும் போது, ஆண்ட்ராய்டு "interpret-only" முறையைப் பயன்படுத்துகிறது. இது உங்கள் செயலியின் தொடக்க நேரத்தை மெதுவாக்குகிறது. சிஸ்டம் (System) பின்னர் காலியாக இருக்கும் நேரங்களில் (idle time) மட்டுமே குறியீட்டை (code) உகப்பாக்கம் (optimize) செய்யும்.

இதை மூன்று படிநிலைகளைக் கொண்ட ஒரு வழிமுறையைப் (pipeline) பயன்படுத்தி சரிசெய்யலாம்.

  1. Baseline Profiles-ஐ உருவாக்குதல் Baseline Profiles என்பது செயலியை நிறுவும் நேரத்திலேயே எந்தெந்த கிளாஸ்களை (classes) கம்பைல் செய்ய வேண்டும் என்று சிஸ்டத்திற்குத் தெரிவிக்கும். உங்கள் CI pipeline-இல் இவற்றை உருவாக்க Macrobenchmark-ஐப் பயன்படுத்தவும். எங்களது ப்ரொஃபைல்கள் 12% மெத்தட்களை (methods) மட்டுமே உள்ளடக்கியிருந்தன, ஆனால் 94% தொடக்க நேரத்தைக் கையாண்டன.

  2. DEX Layout Reordering-ஐச் செயல்படுத்துதல் இது உங்கள் Gradle properties-இல் ஒரு வரி மட்டுமே. இது உங்கள் DEX கோப்பில் தொடக்க கிளாஸ்களை (startup classes) ஒன்றாகக் குழுவாக்க R8-இடம் கூறுகிறது. இது page faults-ஐ 30% முதல் 50% வரை குறைக்கிறது. கிளாஸ்கள் ஒன்றாக இருக்கும்போது, சிஸ்டம் டிஸ்க்கிலிருந்து (disk) தேவையற்ற தரவுகளைக் குறைவாகவே ஏற்றும்.

  3. Cloud Profiles-ஐப் பயன்படுத்துதல் Google Play பயனர்களிடமிருந்து ப்ரொஃபைல்களைச் சேகரித்து, புதிய இன்ஸ்டால் செயல்களுக்கு அனுப்புகிறது. இது உங்கள் வேக அதிகரிப்பை மேலும் பலமடங்கு உயர்த்துகிறது.

எங்களது சோதனையின் முடிவுகள்:

உங்கள் பணிப்பாய்விற்கான (workflow) முக்கியமான குறிப்புகள்:

வேகமான செயலிகளை உருவாக்க இந்த அடுக்குகளை (layers) ஒன்றிணைக்கவும்.

ஆதாரம்: https://dev.to/software_mvp-factory/profile-guided-optimization-for-android-app-startup-2i7a