Uygulamalar güç tüketimini önemli ölçüde etkileyebilir mi?


16

Çalıştığı cihazın güç tüketimini etkilemek için tek bir genel amaçlı uygulama için yapılabilecek bir şey var mı?

Bireysel uygulamalarda yapılan optimizasyonların güç tüketimini genel bir şekilde nasıl etkileyebileceğini bilmiyorum, birisi uygulama yazma konusundaki farklı yaklaşımların üzerinde çalıştıkları cihazın güç tüketimini etkileyip etkilemediğini açıklayabilir mi?

Yani, aynı şeyi işlevsel olarak yapan, farklı şekillerde yazılmış tek bir program, genel olarak bir cihazın güç tüketimini büyük ölçüde etkiler, farklı ilgisiz programların bir cihazın güç tüketimini nasıl etkileyebileceği hakkında değil.


8
Daha verimli çalışmasını sağlayın.
Christopher Berman

Sorunuzun tamamen konu dışı olduğunu söylemiyorum, ancak bir kitabın Soru-Cevap sitesindeki bir yanıttan daha uygun olacağını düşünüyorum. Bu gömülü sistemler, mobil geliştirme veya tamamen başka bir şey gibi en azından bir bağlam sağlamalısınız. Herhangi bir cevap büyük ölçüde buna bağlı olmalıdır.
K.Steff

2
Pille çalışan gömülü sistemlerden mi bahsediyorsunuz? Genel olarak, güç tüketimini en aza indirmenin anahtarı, sistemin gerçekten fazla bir şey yapmak zorunda kalmayacağı zamanları tanımlamak ve bunun için gerçekten hiçbir şey olmadığında sistemin herhangi bir parçasının etkin olacağı süreyi en aza indirmektir. yapmak. Çoğu durumda, ne kadar çabaya değer olduğuna dair oldukça açık bir sınır olacaktır; eğer bir cihaz gerekli fonksiyonlarda 1mAH / gün kullanacaksa, sadece 10uAH / gün harcayan basit bir rutin sadece 1uAH / gün israf eden karmaşık olana tercih edilebilir (çünkü ikincisi enerjiden sadece% 1 tasarruf sağlayacaktır).
supercat

1
Özellikle bağlamla değil, genel bir şey düşünüyordum. Bu 'sadece merak için' bir soruydu. Ancak, örneğin, mobil cihazlarda güç tasarrufu için herhangi bir kural var mı? veya gömülü sistemler? veya web uygulamaları geliştirme? Disk erişimini ve ağ iletişimi veya bunun gibi şeyleri geciktiriyor olabilir.
Juan Manuel

1
Bu noktayı kaçırdığından şüpheleniyorum. Radyo yarısını kullanmak için bir uygulamayı değiştirirseniz, uygulama çalıştığında güç tüketimini görürsünüz. Telefondaki radyo sabit bir hızda güç çekmiyor. Güç tüketimi doğrudan yazılım tarafından ne yapılmasına bağlı olduğuna bağlıdır.
Robot Gort

Yanıtlar:


7

Güç tüketimi endişeleri genellikle performansa zarar verir, bu nedenle ikisinin dengelenmesi gerekir. Daha verimli bir donanım düşünmek için sermaye muhasebesi maliyetini uygulayın ve çok karmaşık bir ödünleşmeye dönüşür. (yalnızca miliwatt / saat kaydetmek için 100 saat veya yazılımı çalıştıran bilgisayarlarda daha verimli bir PSU için 10 dolar harcarsınız). Güç tüketimi (yazılımın neden olduğu) hakkında endişelenmenin ticari anlamda mantıklı olduğu tek zaman, Google'ın çalıştığı bir sunucu çiftliği, pille çalışan cihazlar ve pazarlama Tree Hugging Greenie kutusunda bir işaret istiyorsa.

Bu "ilk adım algoritmaları daha verimli olun" diyerek önemsizleştirmek için çok karmaşık. Performans / güç eğrisi ve özellikle "algılanan performans" / güç eğrisi doğrusal değildir. Kontrolünüzün olup olmadığına ve kullanılan işletim sistemi aracılığıyla hangi seviyeye bağlı olduğuna bağlıdır.

Bunun ötesinde, sorunun her bir özel duruma farklı cevapları olacaktır. Örneğin, bir keresinde, maksimum saat hızında uykudan daha uzun süre çalışan daha fazla güç verimliliği olan pille çalışan bir sistemde (9V hücrede 18 ay hedef) çalıştım, ancak benzer bir yazılımı çalıştıran başka bir mikro, yavaş bir saatte işaretlemek daha iyi oldu bir dakika kadar uyuyun.


bu aslında doğru cevap, donanım güç tüketiminde yazılımdan çok daha etkili bir rol oynuyor . Daha verimli PSU örnek yapar TÜM cihazın ve onlara önemsiz katkılarda tek uygulamaların mikro optimizasyonlar gölgeleyen.

Evet, ancak bir program aygıttaki her donanım parçasını eşit olarak kullanmaz. Örneğin, sabit disk sürücüsünü hiçbir zaman PC'de kullanmayan bir program, sabit sürücüden sürekli olarak okuyan ve sabit sürücüden yazandan çok daha az güç kullanır.
Robot Gort

@StevenBurnap HD, bazı HD sıkma ve çekme suyu her zaman bağlı değildir. En önemli güç optimizasyonları her zaman donanımdan (ve içindeki mikro koddan) gelecektir. Yeşil HD ile aynı yazılım daha az güç kullanacağından, donanım yine de daha fazla fark yaratır.

2
Bu doğru değil. Sisteminize bir Kill-a-watt ekleyin ve birincisi sonsuz bir döngüye sayı ekleyen ve diğeri 5 GB'lık bir dosyayı tekrar tekrar tarayan iki uygulama çalıştırın. Bir fark göreceksiniz. Güç tüketimi, ne yapması istendiğine bağlı olarak, bazen önemli ölçüde bir bilgisayarda değişecektir.
Robot Gort

Bir bilgisayarın güç tüketiminin yalnızca hangi yazılımın çalıştığına bağlı olarak değiştiğini gösteren bir örnek: codinghorror.com/blog/2005/08/…
Gort the Robot

2

Yapabileceğiniz en iyi şey algoritmalarınızı ve uygulamanızın iş mantığını optimize etmektir.

Belirli bir derleme işlemini de benimseyebilirsiniz, birçok kodlayıcı sadece bir derleme aşamasında satır içi işlevleri ve optimizasyonu unutur, çoğu zaman bu size performans açısından ve dolayısıyla güç tüketimi optimizasyonu açısından küçük bir avantaj sağlar.


Bu doğru cevap. Optimizasyon tek yoldur.
superM

1
Bu nasıl doğru cevap? Bir sistemde CPU'dan çok daha fazla güç emici vardır.
James

1
@ Yazılımınız yalnızca CPU kullanıyor mu? başka hiçbir şey?
user827992

3
@ user827992: Hayır, önemli olan bu. Radyo (GSM / 3G / Wifi) ve ekran gibi şeyler bir CPU'dan çok daha fazla güç tüketir. Algoritmalarınızı optimize etmek burada size yardımcı olmaz. Güç tüketiminin endişe duyduğu sistemde, kodunuzu optimize etmenin erken bir optimizasyon olduğunu söyleyecek kadar ileri gideceğim.
James

1
@ user827992: Evet, ancak bu tasarruflar diğer pil tüketimi kaynaklarına kıyasla çok küçük. İstediğiniz gibi -OInfinity için optimize edebilirsiniz, ancak örneğin, kodunuz öldüğünüz bir yerde bazı bayrakları yoklarsa.
James

2

Doğru cevap ....

"We should forget about small efficiencies, 
say about 97% of the time: premature 
optimization is the root of all evil"
Donald Knuth

Müşterilerinize değer sağlamaya odaklanın. Temiz, anlaşılması kolay ve bakımı kolay bir çözüm oluşturun.

Daha fazla "güce" ihtiyacınız varsa, uygulamanızı profilleyebilirsiniz. Profilleme ile, değiştiğinde, en büyük yararı sağlayacak ve "etkinlik" artacak nokta darboğazlarını sabitleyeceksiniz.


4
Bunun soruyu cevaplamadığını söyleyebilirim, çünkü "Güç tüketimi sizin probleminiz değil; müşteriler için değere odaklanın". Ve bazı yönetim mantrasına çok benziyor. OP'nin daha düşük güç tüketimi gerektirdiği için ciddi gerekçeleri olabilir.
K.Steff

Eh "güç tüketimi" yanlış. Yine de, ulaşıldığında, sistemin çok fazla güç tüketen kısımlarını analiz ederek optimizasyon yapılması gereken bir güç tüketimi seviyesi ayarlaması gerektiğini düşünüyorum. Bu, bir dizi stres testi ile gerçekleştirilebilir.
Michal Franc

1

CPU açısından yapılması gereken çok şey olmadığı doğru olsa da, cihazın kullanıldığında genellikle güç tüketen özellikleri vardır. Bir bilgisayarda, çoğunlukla kimse umursamaz, ancak bir disk okumanın (SSD olmayan sürücüler varsayarak) sabit sürücünün dönmesine ve kafanın hareket etmesine neden olacağı kesinlikle doğrudur, bu da biraz güç tüketir. Bir PC'de bu çok önemlidir, ancak bir mobil cihazda bu çok gerçek bir sorun olabilir.

Bir telefonda bunun en açık örneği iletişimdir. Kablosuz sinyal göndermek enerji alır. 500 WATT güç kaynağına bağlı bir bilgisayarda, önemsizdir. Bir telefonda değil. Bir sunucuyu büyük miktarlarda veri için sürekli sorgulayan bir uygulama, hiç ağ kullanmayandan çok daha fazla güç kullanır.

Bu çok gerçek bir sorun, sadece google için "Android uygulaması benim pil tükenmiş". İşte geliştiricilere güç tüketimini nasıl en aza indireceklerini anlatan birçok sayfadan biri.

Genel olarak, genel performans (yani CPU'yu olabildiğince yapmak) ve ağ kullanımı için optimize etmek istersiniz. Mümkün olduğunca küçük mesajlarla mümkün olduğunca az iletişim kurun.

Diğerlerinin söylediği gibi, bu, kodunuzun birçoğu tamamlandıktan sonra , bir sorun belirlediğinizde ve profilli güç kullanımı için bir görevdir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.