Satuan 8 / 11

Optimalisasi Kinerja dan Baterai: Aplikasi Cepat dan Efisien dengan Kecerdasan Buatan

Keuntungan:

  • Dengan terlebih dahulu mengambil profil dan mengukur hambatan sebenarnya, melakukan pengoptimalan berdasarkan data, bukan hanya dugaan, dan keluaran profil diinterpretasikan oleh kecerdasan buatan
  • Kemampuan untuk menargetkan operasi yang paling mahal dalam hal waktu startup, kelancaran, memori dan baterai dan menghapus pekerjaan berat dari thread utama
  • Kemampuan untuk mengelola biaya baterai dan prosesor dari kemampuan AI seperti model pada perangkat dan panggilan cloud melalui pengambilan sampel dan pemrosesan batch

Pengguna seluler tidak sabar. Jika aplikasi terbuka dengan lambat, macet saat menggulir, atau menghabiskan baterai dengan cepat, pengguna akan menghapusnya dan memberinya peringkat bintang di toko. Kinerja dan efisiensi baterai adalah masalah kelangsungan hidup aplikasi seluler; Hal ini secara langsung memengaruhi kepuasan pengguna dan peringkat toko. AI adalah bantuan yang ampuh dalam mendeteksi hambatan kinerja (bottleneck), menafsirkan hasil pengukuran, dan merekomendasikan pengoptimalan. Namun aturan emasnya tetap ada: ukur dulu, optimalkan nanti. Pada unit ini, kita akan belajar memecahkan masalah kinerja dan baterai secara berbasis data dengan AI. Masalah yang sangat penting adalah mengelola dampak kemampuan AI pada baterai dan kinerja yang kami tambahkan di unit sebelumnya (model pada perangkat, panggilan cloud).

Mengoptimalkan tanpa mengukur

Kesalahan terbesar yang dilakukan pengembang yang tidak berpengalaman adalah pengoptimalan prediktif: membuang-buang waktu dengan mengatakan "yang ini pasti lambat". Kemacetan sebenarnya hampir selalu terjadi di tempat yang tidak terduga. Jadi pertama-tama profil diambil (profiling — mengukur bagian mana dari aplikasi yang menghabiskan banyak waktu/memori/baterai). Android Studio Profiler dan Xcode Instruments ditujukan untuk pekerjaan ini. Memberikan data pengukuran ke AI mempercepat interpretasi; Namun tanpa pengukuran, memberi tahu AI "aplikasi saya lambat, percepat" berarti membuat prediksi secara membabi buta.

Empat sumbu utama kinerja adalah:

sumbu

gejala

penyebab khas

Waktu mulai

Aplikasi dibuka terlambat

Pekerjaan berat di thread utama

Kefasihan (jank)

Gulir macet

Pemrosesan yang lama, penggambaran ulang yang tidak perlu di thread UI

memori

bengkak, kolaps

Kebocoran, gambar besar, cache tidak terkontrol

baterai/panas

ejakulasi cepat

Lokasi berkelanjutan, jaringan, sensor, pekerjaan latar belakang

Tip: Saat menanyakan AI tentang masalah kinerja, berikan keluaran profil (fungsi mana yang membutuhkan waktu berapa lama, grafik memori). Data keras seperti “Fungsi itu membutuhkan 30ms per frame” memungkinkan AI untuk fokus pada hambatan yang sebenarnya; Ungkapan subjektif seperti "lambat" menghasilkan jawaban yang umum dan tidak berguna.

Biaya baterai untuk kemampuan AI

Fitur AI yang kami tambahkan dalam modul ini sangat kuat, tetapi tidak gratis. Mengekstrak model pada perangkat akan membebani prosesor dan baterai; Pengenalan gambar yang terus berjalan (misalnya kamera yang memproses setiap frame) akan membuat ponsel memanas dan menguras baterai dalam beberapa menit. Sebaliknya, panggilan Cloud AI menghabiskan baterai karena radio jaringan (antena yang mengirim dan menerima data) tetap menyala sepanjang waktu. Solusi: jalankan model pada perangkat hanya jika diperlukan, ambil sampel kamera beberapa kali per detik, bukan setiap frame, kirim permintaan cloud secara batch, lakukan pekerjaan berat saat perangkat sedang diisi daya atau dalam keadaan idle.

Perhatian: Fitur AI yang terus berjalan (terjemahan langsung, pengenalan objek berkelanjutan) dapat menguras baterai dengan sangat cepat, memanaskan perangkat, dan mungkin dibatasi oleh sistem. Sebuah fitur yang membuat pengguna merasa biaya ini dihapus. Saya selalu bertanya kepada AI "bagaimana cara membuat fitur ini ramah baterai?" Ajukan juga pertanyaannya.

Langkah-langkah optimasi

  1. Ukur. Temukan hambatan sebenarnya dengan Profiler; jangan menebak.
  2. Pilih masalah terbesar. Jangan mengejar peningkatan 1%; Bertujuan untuk transaksi yang paling mahal.
  3. Tanyakan AI dengan data. Minta saran pengoptimalan dengan keluaran profil + kode yang relevan.
  4. Terapkan dan ukur lagi. Apakah perbaikannya nyata? Apakah jumlahnya sudah turun?
  5. Kontrol regresi. Apakah pengoptimalan merusak sesuatu? Ulangi pengujian visual dan fungsional.

tiga kasus mini

Kasus 1 — Mencari di tempat yang salah. Satu tim mengira daftarnya macet dan mengerjakan ulang kode gulir selama berminggu-minggu tetapi tidak berhasil. Ketika mereka mengambil profiler dan memasukkan data ke AI, ternyata hambatan sebenarnya adalah gambar yang dimuat ulang melalui jaringan pada setiap baris. Ketika cache visual ditambahkan, kelancaran meningkat dari 42 FPS menjadi 60 FPS. Pelajaran: pengukuran menghindari upaya sia-sia selama berminggu-minggu.

Kasus 2 — Fitur monster baterai. Aplikasi terjemahan menambahkan terjemahan teks langsung dengan kamera; Pengguna mengeluh bahwa "ponsel memanas dalam 15 menit dan 30% baterainya habis." Saat AI dikonsultasikan, kamera ditemukan memproses 30 frame per detik; Ketika ini dikurangi menjadi 5 frame dan hasilnya diperbarui dengan jarak beberapa frame, konsumsi baterai menurun hingga sepertiga, dan kualitasnya tidak terlihat. Pelajaran: Selalu atur AI dengan mata baterai.

Kasus 3 — Onsetnya lambat. Sebuah aplikasi dibuka dalam 4,5 detik; 20% pengguna keluar saat startup. Profil tersebut menunjukkan bahwa semua pekerjaan awal (analisis, pemuatan data, persiapan model) dilakukan secara berurutan di thread utama. Dengan proposal AI, ini telah ditunda dan diabaikan; Waktu pembukaan dikurangi menjadi 1,3 detik, dan tingkat pengabaian dikurangi setengahnya. Pelajaran: lakukan hanya pekerjaan penting di awal.

Perintah lemah / Perintah kuat

Perintah lemah: "Aplikasi saya lambat, percepat."

Perintah yang kuat: "Pengguliran daftar terhenti (jank) di aplikasi Android saya. Data profiler: bindImageView memerlukan waktu 28 md pada setiap bingkai, gambar dimuat dari jaringan setiap kali, tidak ada cache. Kode terkait: [Kode adaptor RecyclerView]. Merekomendasikan 3 pengoptimalan yang paling efektif berdasarkan dampaknya. Nyatakan keuntungan yang diharapkan dan kemungkinan efek samping untuk masing-masingnya. Prioritaskan solusi yang tidak mengurangi kualitas gambar."

Templat yang dapat disalin

Templat analisis kemacetan: "Tafsirkan data profil berikut dan temukan 3 operasi yang paling mahal: [output profiler]. Sarankan kemungkinan penyebab dan optimalisasi konkrit untuk masing-masing operasi. Berikan dampak tertinggi terlebih dahulu."

Templat pengoptimalan baterai:"Fitur ini menguras baterai dengan cepat: [fitur, misalnya lokasi permanen]. Jadikan ramah baterai:- Kurangi frekuensi pengambilan sampel- Pembatasan di latar belakang- Pemrosesan batch- Jalankan hanya jika diperlukan Urutkan solusi tanpa mengganggu pengalaman pengguna. [kode]"

Templat percepatan startup: "Mempercepat startup aplikasi. Hal-hal yang sedang dilakukan saat startup: [daftar]. Mana yang dapat ditunda, dilatar belakangi, atau dimuat dengan lambat? Pisahkan yang penting. [kode]"

Templat biaya fitur AI: "Evaluasi performa dan biaya baterai dari fitur [model pada perangkat / panggilan cloud] yang saya tambahkan. Cantumkan metrik yang harus saya ukur dan strategi untuk mengurangi biaya. [kode]"

Kesalahan umum

  • Mengoptimalkan tanpa mengukur. Kemacetan sebenarnya sering kali terjadi di lokasi yang berbeda dari perkiraan.
  • Mengejar keuntungan kecil. Bertujuan untuk tindakan yang paling mahal daripada peningkatan 1%.
  • Mengabaikan biaya baterai fitur AI. Model/kamera/jaringan yang terus berjalan akan menghabiskan baterai.
  • Melelahkan thread utama. Pekerjaan berat untuk memulai dan menggulir tidak boleh dilakukan di thread UI.
  • Tidak melakukan pengukuran ulang setelah pengoptimalan. Verifikasi bahwa peningkatan tersebut nyata dan tidak merusak apa pun.
  • Mengukur kinerja di emulator. Kecepatan perangkat, suhu, dan baterai sebenarnya sangat berbeda.

Singkatnya

Kinerja dan baterai adalah masalah kelangsungan hidup aplikasi seluler. Aturan emasnya: ukur dulu, optimalkan nanti. Memberikan data profil ke AI mempercepat interpretasi; Keinginan besar untuk "mempercepat" mengarah pada tebakan buta. Incarlah transaksi yang paling mahal, jangan mengejar keuntungan kecil. Kemampuan AI yang ditambahkan dalam modul ini sangat kuat tetapi memerlukan biaya baterai dan prosesor; Kelola biaya ini dengan mengurangi frekuensi pengambilan sampel, pengelompokan, dan pengoperasian hanya jika diperlukan. Ukur lagi di perangkat sebenarnya setelah setiap pengoptimalan.

Tugas aplikasi

Impor profil dalam aplikasi (proyek atau contoh Anda sendiri) atau buat contoh keluaran profil dan interpretasikan oleh AI dengan "Templat analisis hambatan". Terapkan pengoptimalan dampak tertinggi dan ukur lagi: apakah angkanya benar-benar turun? Selain itu, evaluasi fitur AI yang Anda tambahkan dalam modul ini (model pada perangkat atau panggilan cloud) dalam hal baterai dengan "template biaya fitur AI" dan tentukan setidaknya satu pengaturan ramah baterai.

daftar periksa

  • [ ] Saya mendapat profil sebelum optimasi, saya tidak menebaknya
  • [ ] Saya mengincar perdagangan yang paling mahal, saya tidak menghamburkan keuntungan kecil
  • [ ] Saya memberikan data profil AI dalam angka konkrit
  • [ ] Saya mengevaluasi biaya baterai/prosesor untuk fitur AI
  • [ ] Saya melepaskan beban berat dari thread utama
  • [ ] Setelah pengoptimalan, saya mengukur lagi pada perangkat sebenarnya dan memeriksa regresinya