Android App Startup ਲਈ Profile-Guided Optimization
ਅਸੀਂ ਆਪਣੇ Android cold start ਨੂੰ 1.2s ਤੋਂ ਘਟਾ ਕੇ 380ms ਕਰ ਦਿੱਤਾ ਹੈ।
ਜ਼ਿਆਦਾਤਰ ਐਪਸ ਪਹਿਲੀ ਵਾਰ ਚੱਲਣ ਵੇਲੇ ਸਭ ਤੋਂ ਹੌਲੀ compilation mode 'ਤੇ ਚੱਲਦੀਆਂ ਹਨ। ਜਦੋਂ ਕੋਈ ਯੂਜ਼ਰ ਪਹਿਲੀ ਵਾਰ ਤੁਹਾਡੀ ਐਪ ਇੰਸਟਾਲ ਕਰਦਾ ਹੈ, ਤਾਂ Android "interpret-only" mode ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਇਹ ਤੁਹਾਡੇ startup ਨੂੰ ਹੌਲੀ ਬਣਾ ਦਿੰਦਾ ਹੈ। ਸਿਸਟਮ ਬਾਅਦ ਵਿੱਚ ਸਿਰਫ਼ idle time ਦੌਰਾਨ ਹੀ ਕੋਡ ਨੂੰ optimize ਕਰਦਾ ਹੈ।
ਤੁਸੀਂ ਇੱਕ ਤਿੰਨ-ਪੜਾਵੀ pipeline ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਸਨੂੰ ਠੀਕ ਕਰ ਸਕਦੇ ਹੋ।
Baseline Profiles ਬਣਾਓ Baseline Profiles ਸਿਸਟਮ ਨੂੰ ਦੱਸਦੇ ਹਨ ਕਿ ਇੰਸਟਾਲ ਦੇ ਸਮੇਂ ਕਿਹੜੀਆਂ classes ਨੂੰ compile ਕਰਨਾ ਹੈ। ਇਹਨਾਂ ਨੂੰ ਆਪਣੇ CI pipeline ਵਿੱਚ ਬਣਾਉਣ ਲਈ Macrobenchmark ਦੀ ਵਰਤੋਂ ਕਰੋ। ਸਾਡੇ profiles ਨੇ 12% methods ਨੂੰ ਕਵਰ ਕੀਤਾ ਪਰ 94% startup time ਨੂੰ ਸੰਭਾਲਿਆ।
DEX Layout Reordering ਨੂੰ ਚਾਲੂ ਕਰੋ ਇਹ ਤੁਹਾਡੀ Gradle properties ਵਿੱਚ ਇੱਕ ਸਿੰਗਲ ਲਾਈਨ ਹੈ। ਇਹ R8 ਨੂੰ ਤੁਹਾਡੀ DEX file ਵਿੱਚ startup classes ਨੂੰ ਇਕੱਠਾ ਕਰਨ ਲਈ ਕਹਿੰਦਾ ਹੈ। ਇਹ page faults ਨੂੰ 30% ਤੋਂ 50% ਤੱਕ ਘਟਾਉਂਦਾ ਹੈ। ਜਦੋਂ classes ਇਕੱਠੀਆਂ ਰਹਿੰਦੀਆਂ ਹਨ, ਤਾਂ ਸਿਸਟਮ disk ਤੋਂ ਘੱਟ ਫਾਲਤੂ ਡਾਟਾ ਲੋਡ ਕਰਦਾ ਹੈ।
Cloud Profiles ਦੀ ਵਰਤੋਂ ਕਰੋ Google Play ਯੂਜ਼ਰਾਂ ਤੋਂ profiles ਇਕੱਠੇ ਕਰਦਾ ਹੈ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਨਵੇਂ installs ਨੂੰ ਭੇਜਦਾ ਹੈ। ਇਹ ਤੁਹਾਡੀ ਰਫ਼ਤਾਰ ਦੇ ਫਾਇਦੇ ਨੂੰ ਹੋਰ ਵਧਾ ਦਿੰਦਾ ਹੈ।
ਸਾਡੀ ਟੈਸਟਿੰਗ ਦੇ ਨਤੀਜੇ:
- ਕੋਈ profile ਨਹੀਂ: 1,204ms cold start
- ਸਿਰਫ਼ Baseline Profile: 620ms cold start
- Baseline + DEX reorder: 445ms cold start
- Baseline + DEX reorder + Cloud: 380ms cold start
ਤੁਹਾਡੇ workflow ਲਈ ਮਹੱਤਵਪੂਰਨ ਸੁਝਾਅ:
- ਹਰ ਰਿਲੀਜ਼ ਲਈ CI ਵਿੱਚ profiles ਬਣਾਓ। Stale profiles ਕਾਰਨ performance ਵਿੱਚ ਕਮੀ ਆ ਸਕਦੀ ਹੈ।
- R8 ਚੱਲਣ ਤੋਂ ਬਾਅਦ profiles ਨੂੰ ਦੁਬਾਰਾ ਬਣਾਓ। R8 ਤੁਹਾਡੇ ਕੋਡ ਦੇ structure ਨੂੰ ਬਦਲ ਦਿੰਦਾ ਹੈ।
- Macrobenchmark ਵਿੱਚ "Partial" compilation mode ਦੀ ਵਰਤੋਂ ਕਰੋ। "Full" mode ਗਲਤ ਨਤੀਜੇ ਦਿੰਦਾ ਹੈ ਜੋ ਅਸਲ ਯੂਜ਼ਰ ਅਨੁਭਵ ਨੂੰ ਨਹੀਂ ਦਰਸਾਉਂਦੇ।
- ਵੱਖ-ਵੱਖ Android versions 'ਤੇ ਟੈਸਟ ਕਰੋ। Performance ਦੇ ਫਾਇਦੇ ਪੁਰਾਣੇ ਅਤੇ ਨਵੇਂ API levels ਦੇ ਵਿਚਕਾਰ ਵੱਖੋ-ਵੱਖਰੇ ਹੁੰਦੇ ਹਨ।
ਤੇਜ਼ ਐਪਸ ਬਣਾਉਣ ਲਈ ਇਹਨਾਂ ਲੇਅਰਾਂ ਨੂੰ ਇੱਕ ਦੂਜੇ ਦੇ ਉੱਪਰ ਲਗਾਓ।
Source: https://dev.to/software_mvp-factory/profile-guided-optimization-for-android-app-startup-2i7a