𝗣𝗿𝗼𝗳𝗶𝗹𝗲-𝗚𝘂𝗶𝗱𝗲𝗱 𝗢𝗽𝘁𝗶𝗺𝗶𝘇𝗮𝘁𝗶𝗼𝗻 𝗳𝗼𝗿 𝗔𝗻𝗱𝗿𝗼𝗶𝗱 𝗔𝗽𝗽 𝗦𝘁𝗮𝗿𝘁𝘂𝗽

ഞങ്ങളുടെ ആൻഡ്രോയിഡ് കോൾഡ് സ്റ്റാർട്ട് (cold start) സമയം 1.2s-ൽ നിന്ന് 380ms-ലേക്ക് ഞങ്ങൾ കുറച്ചു.

മിക്ക ആപ്പുകളും ആദ്യത്തെ ലോഞ്ചിന് സമയത്ത് ഏറ്റവും സാവധാനത്തിലുള്ള കോമ്പിലേഷൻ മോഡിലാണ് പ്രവർത്തിക്കുന്നത്. ഒരു ഉപയോക്താവ് നിങ്ങളുടെ ആപ്പ് ആദ്യമായി ഇൻസ്റ്റാൾ ചെയ്യുമ്പോൾ ആൻഡ്രോയിഡ് "interpret-only" മോഡ് ആണ് ഉപയോഗിക്കുന്നത്. ഇത് നിങ്ങളുടെ ആപ്പിന്റെ സ്റ്റാർട്ടപ്പ് വേഗത കുറയ്ക്കുന്നു. സിസ്റ്റം പിന്നീട് ഐഡിൽ (idle) സമയത്ത് മാത്രമേ കോഡ് ഒപ്റ്റിമൈസ് ചെയ്യുകയുള്ളൂ.

മൂന്ന് ഘട്ടങ്ങളുള്ള ഒരു പൈപ്പ്‌ലൈൻ ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഇത് പരിഹരിക്കാം.

  1. ബേസ്‌ലൈൻ പ്രൊഫൈലുകൾ (Baseline Profiles) നിർമ്മിക്കുക ഇൻസ്റ്റാൾ ചെയ്യുന്ന സമയത്ത് ഏത് ക്ലാസുകളാണ് കോമ്പൈൽ ചെയ്യേണ്ടതെന്ന് ബേസ്‌ലൈൻ പ്രൊഫൈലുകൾ സിസ്റ്റത്തെ അറിയിക്കുന്നു. നിങ്ങളുടെ CI പൈപ്പ്‌ലൈനിൽ ഇവ നിർമ്മിക്കാൻ Macrobenchmark ഉപയോഗിക്കുക. ഞങ്ങളുടെ പ്രൊഫൈലുകൾ 12% മെത്തേഡുകളെ മാത്രം ഉൾക്കൊള്ളുന്നുണ്ടെങ്കിലും സ്റ്റാർട്ടപ്പ് സമയത്തിന്റെ 94% കൈകാര്യം ചെയ്യുന്നു.

  2. DEX ലേഔട്ട് റീഓർഡറിംഗ് (DEX Layout Reordering) പ്രവർത്തനക്ഷമമാക്കുക ഇത് നിങ്ങളുടെ Gradle പ്രോപ്പർട്ടീസിലെ ഒരു വരി മാത്രമാണ്. സ്റ്റാർട്ടപ്പ് ക്ലാസുകളെ നിങ്ങളുടെ DEX ഫയലിൽ ഒരുമിച്ച് ഗ്രൂപ്പ് ചെയ്യാൻ ഇത് R8-നോട് ആവശ്യപ്പെടുന്നു. ഇത് പേജ് ഫോൾട്ടുകൾ (page faults) 30% മുതൽ 50% വരെ കുറയ്ക്കുന്നു. ക്ലാസുകൾ ഒരുമിച്ച് ഇരിക്കുമ്പോൾ, സിസ്റ്റം ഡിസ്കിൽ നിന്ന് അനാവശ്യമായ ഡാറ്റ കുറച്ച് മാത്രമേ ലോഡ് ചെയ്യുന്നുള്ളൂ.

  3. ക്ലൗഡ് പ്രൊഫൈലുകൾ (Cloud Profiles) ഉപയോഗിക്കുക ഗൂഗിൾ പ്ലേ ഉപയോക്താക്കളിൽ നിന്ന് പ്രൊഫൈലുകൾ ശേഖരിക്കുകയും അവ പുതിയ ഇൻസ്റ്റാളുകളിലേക്ക് അയച്ചുകൊടുക്കുകയും ചെയ്യുന്നു. ഇത് നിങ്ങളുടെ വേഗത വർദ്ധിപ്പിക്കുന്നു.

ഞങ്ങളുടെ പരിശോധനാ ഫലങ്ങൾ:

നിങ്ങളുടെ വർക്ക്ഫ്ലോയ്ക്കുള്ള പ്രധാന നിർദ്ദേശങ്ങൾ:

വേഗതയേറിയ ആപ്പുകൾ നിർമ്മിക്കാൻ ഈ ഘട്ടങ്ങൾ ഒന്നിനുപുറകെ ഒന്നായി ഉപയോഗിക്കുക.

Source: https://dev.to/software_mvp-factory/profile-guided-optimization-for-android-app-startup-2i7a