Adakah yang dapat dilakukan untuk satu aplikasi keperluan umum untuk memengaruhi konsumsi daya perangkat yang digunakan?
Saya tidak terbiasa dengan bagaimana pengoptimalan aplikasi individual dapat memengaruhi konsumsi daya secara umum, dapatkah seseorang menjelaskan jika pendekatan berbeda dalam menulis aplikasi memengaruhi konsumsi daya perangkat yang mereka jalankan?
Yaitu, dapatkah sebuah program tunggal, yang melakukan hal yang sama persis secara fungsional, ditulis dengan cara berbeda secara drastis mempengaruhi konsumsi daya perangkat secara umum, bukan tentang bagaimana berbagai program yang tidak terkait dapat memengaruhi konsumsi daya perangkat.
programming-practices
optimization
multi-platform
Juan Manuel
sumber
sumber
Jawaban:
Kekhawatiran konsumsi daya seringkali merugikan kinerja, sehingga keduanya harus seimbang. Terapkan akuntansi biaya modal untuk mempertimbangkan perangkat keras yang lebih efisien, dan itu menjadi tradeoff yang sangat kompleks. (cukup Anda menghabiskan 100 jam untuk menghemat miliwatt / jam, atau $ 10 untuk PSU yang lebih efisien dalam pelaksana perangkat lunak yang menjalankannya). Satu-satunya waktu yang masuk akal secara komersial untuk mengkhawatirkan konsumsi daya (yang disebabkan oleh perangkat lunak) adalah server farm ukuran Google berjalan, perangkat bertenaga baterai, dan jika pemasaran ingin centang pada kotak Tree Hugging Greenie.
Terlalu rumit untuk meremehkannya dengan mengatakan "Jadikan algoritma Anda lebih efisien" - itu baru langkah pertama. Kurva kinerja / daya dan khususnya "kinerja yang dirasakan" / kurva daya adalah tidak linier. Itu tergantung jika Anda memiliki kontrol dan ke tingkat apa melalui OS yang digunakan.
Selain itu, pertanyaannya akan memiliki jawaban yang berbeda untuk setiap situasi tertentu. Misalnya saya pernah bekerja pada sistem bertenaga baterai (target 18 bulan pada sel 9V) yang lebih efisien daya berjalan pada kecepatan clock maksimum untuk durasi singkat daripada tidur, namun perangkat lunak lain yang mirip mikro berjalan lebih baik untuk menandai jam lambat sekitar satu menit kemudian tidur.
sumber
Hal terbaik yang dapat Anda lakukan adalah mengoptimalkan algoritme dan logika bisnis aplikasi Anda.
Anda juga dapat mengadopsi proses kompilasi tertentu, banyak coder lupa tentang fungsi inline dan optimisasi dalam fase kompilasi, sebagian besar waktu ini memberi Anda sedikit keunggulan dalam hal kinerja dan, akibatnya, dalam hal optimasi konsumsi daya.
sumber
Jawaban yang tepat adalah ....
Fokus pada pemberian nilai kepada klien Anda. Buat solusi yang bersih, mudah dimengerti dan mudah dirawat.
Kemudian jika Anda membutuhkan lebih banyak "kekuatan" Anda dapat membuat profil aplikasi Anda. Dengan profiling Anda akan menentukan titik kemacetan bahwa ketika diubah, akan memberikan manfaat terbesar dan meningkatkan "efisiensi".
sumber
Meskipun benar bahwa dalam hal CPU tidak ada banyak yang harus dilakukan, seringkali ada fitur perangkat yang mengkonsumsi daya saat digunakan. Pada PC, sebagian besar tidak ada yang peduli, tetapi memang benar bahwa disk read will (dengan asumsi drive non-SSD) menyebabkan hard drive berputar dan kepala bergerak, yang akan menghabiskan sedikit daya. Pada PC ini sepele, tetapi pada perangkat seluler, ini bisa menjadi masalah yang sangat nyata.
Di telepon, contoh paling jelas dari hal ini adalah komunikasi. Mengirim sinyal nirkabel membutuhkan energi. Pada PC, terhubung ke catu daya 500 WATT, itu tidak penting. Di telepon, tidak. Aplikasi yang terus-menerus melakukan polling server untuk sejumlah besar data akan menggunakan daya yang jauh lebih besar daripada yang tidak menggunakan jaringan sama sekali.
Ini adalah masalah yang sangat nyata, hanya google untuk "Aplikasi Android menguras baterai saya". Berikut adalah satu dari banyak halaman yang memberi tahu pengembang cara meminimalkan konsumsi daya.
Secara umum, Anda ingin mengoptimalkan kinerja secara umum (yaitu membuat CPU sebanyak mungkin) dan juga untuk penggunaan jaringan. Berkomunikasi sesedikit mungkin dengan pesan sekecil mungkin.
Seperti yang orang lain katakan, ini adalah tugas untuk setelah sebagian besar kode Anda selesai, ketika Anda telah mengidentifikasi masalah dan menggunakan daya profil.
sumber