แอปพลิเคชันมีผลต่อการใช้พลังงานอย่างมากหรือไม่?


16

มีสิ่งใดบ้างที่สามารถทำได้สำหรับแอปพลิเคชันวัตถุประสงค์ทั่วไปเดียวที่มีผลต่อการใช้พลังงานของอุปกรณ์ที่ใช้งานอยู่

ฉันไม่คุ้นเคยกับวิธีการปรับให้เหมาะสมกับแต่ละแอปพลิเคชันที่อาจส่งผลต่อการใช้พลังงานในลักษณะทั่วไปใครบางคนสามารถอธิบายได้ว่าวิธีการเขียนแอปพลิเคชันที่แตกต่างกันมีผลต่อการใช้พลังงานของอุปกรณ์ที่ใช้งานอยู่หรือไม่

นั่นคือสามารถเป็นโปรแกรมเดี่ยวที่ทำสิ่งเดียวกันได้อย่างถูกต้องตามหน้าที่ซึ่งเขียนในรูปแบบต่าง ๆ ที่ส่งผลกระทบอย่างมากต่อการใช้พลังงานของอุปกรณ์โดยทั่วไปไม่เกี่ยวกับความแตกต่างของโปรแกรมที่ไม่เกี่ยวข้องซึ่งอาจส่งผลต่อการใช้พลังงานของอุปกรณ์


8
ทำให้ประสิทธิภาพยิ่งขึ้น
Christopher Berman

ฉันไม่ได้บอกว่าคำถามของคุณอยู่นอกหัวข้อ แต่ฉันคิดว่าหนังสือจะเหมาะกว่าคำตอบในเว็บไซต์ถาม - ตอบ คุณควรให้บริบทอย่างน้อยที่สุดเช่นระบบฝังตัวนี้การพัฒนาอุปกรณ์พกพาหรืออย่างอื่น คำตอบใด ๆ ควรขึ้นอยู่กับว่า
K.Steff

2
คุณกำลังพูดถึงระบบฝังตัวแบตเตอรี่ขับเคลื่อน? โดยทั่วไปกุญแจสำคัญในการลดการใช้พลังงานคือการระบุเวลาที่ระบบไม่ต้องทำอะไรมากและลดระยะเวลาที่ส่วนใดส่วนหนึ่งของระบบจะทำงานเมื่อไม่มีอะไรจริงๆ ทำ. ในกรณีส่วนใหญ่จะมีข้อ จำกัด ที่ค่อนข้างชัดเจนว่าจะคุ้มค่ากับความพยายามเพียงใด ถ้าอุปกรณ์จะใช้ 1mAH / วันในฟังก์ชั่นที่จำเป็นกิจวัตรที่เรียบง่ายซึ่งสิ้นเปลือง 10uAH / วันอาจจะดีกว่าอุปกรณ์ที่มีความซับซ้อนซึ่งเสียเพียง 1uAH / วัน (เนื่องจากอุปกรณ์จะประหยัดพลังงาน 1%
supercat

1
ฉันกำลังคิดอะไรบางอย่างโดยทั่วไปไม่ใช่บริบทโดยเฉพาะ มันเป็นคำถาม 'เพียงเพื่อความอยากรู้' แต่ยกตัวอย่างเช่นมีกฎใดบ้างสำหรับการประหยัดพลังงานบนอุปกรณ์มือถือ? หรือระบบฝัง หรือในการพัฒนาเว็บแอพพลิเคชั่น อาจทำให้การเข้าถึงดิสก์ล่าช้าและเครือข่ายหรือสิ่งต่าง ๆ เช่นนั้น
Juan Manuel

1
ฉันสงสัยว่าคุณไม่มีจุด หากคุณเปลี่ยนแอพพลิเคชั่นเพื่อใช้งานวิทยุได้มากถึงครึ่งหนึ่งคุณจะเห็นการสิ้นเปลืองพลังงานเมื่อแอปพลิเคชันนั้นหยุดทำงาน วิทยุบนโทรศัพท์ไม่ดึงพลังงานในอัตราคงที่ มันเปลืองพลังงานขึ้นอยู่กับสิ่งที่มันถูกขอให้ทำโดยซอฟต์แวร์
Gort the Robot

คำตอบ:


7

ความกังวลเกี่ยวกับการใช้พลังงานมักจะส่งผลเสียต่อประสิทธิภาพดังนั้นทั้งสองจึงต้องมีความสมดุล ใช้การบัญชีต้นทุนเพื่อพิจารณาฮาร์ดแวร์ที่มีประสิทธิภาพมากขึ้นและกลายเป็นการแลกเปลี่ยนที่ซับซ้อนมาก (คุณเพียงแค่ใช้เวลา 100 ชั่วโมงเพื่อประหยัดมิลลิวัตต์ / ชั่วโมงหรือ $ 10 สำหรับ PSU ที่มีประสิทธิภาพยิ่งขึ้นใน conputers ที่ใช้ซอฟต์แวร์) ครั้งเดียวที่ทำให้รู้สึกกังวลในเชิงพาณิชย์เกี่ยวกับการใช้พลังงาน (เกิดจากซอฟต์แวร์) คือเซิร์ฟเวอร์ฟาร์มขนาดที่ Google ใช้งานอุปกรณ์ที่ใช้พลังงานจากแบตเตอรี่และหากตลาดต้องการทำเครื่องหมายที่ช่อง Green Hugging Greenie

มันซับซ้อนเกินกว่าที่จะพูดพล่อยโดยพูดว่า "ทำให้คุณมีอัลกอริธึมที่ดีกว่า" - นั่นเป็นเพียงขั้นตอนแรก กราฟประสิทธิภาพ / กำลังและโดยเฉพาะอย่างยิ่ง "ประสิทธิภาพการรับรู้" / กราฟกำลังไม่เชิงเส้น ขึ้นอยู่กับว่าคุณมีการควบคุมและระดับการใช้งานระบบปฏิบัติการ

ยิ่งไปกว่านั้นคำถามจะมีคำตอบที่แตกต่างกันไปในแต่ละสถานการณ์ เช่นฉันเคยทำงานกับระบบขับเคลื่อนด้วยแบตเตอรี่ (กำหนดเป้าหมาย 18 เดือนในเซลล์ 9V) ที่มีประสิทธิภาพการใช้พลังงานมากขึ้นที่ความเร็วสัญญาณนาฬิกาสูงสุดในระยะเวลาสั้นกว่าการนอนหลับ แต่ซอฟต์แวร์ตัวอื่นที่ทำงานคล้ายกัน ประมาณหนึ่งนาทีจากนั้นนอนหลับ


นี้เป็นจริงคำตอบที่ถูกฮาร์ดแวร์เล่นมากขึ้นอารมณ์บทบาทในการใช้พลังงานกว่าซอฟต์แวร์ ตัวอย่างของมหาวิทยาลัยสงขลานครินทร์มีประสิทธิภาพมากขึ้นทำให้ทั้งหมดของอุปกรณ์และ overshadows ไมโครเพิ่มประสิทธิภาพของการใช้งานเพียงครั้งเดียวทำให้พวกเขามีส่วนร่วมที่ไม่มีนัยสำคัญ

ใช่ แต่โปรแกรมไม่ได้ใช้ฮาร์ดแวร์ทุกบิตในอุปกรณ์อย่างเท่าเทียมกัน ตัวอย่างเช่นโปรแกรมที่ไม่เคยใช้ฮาร์ดไดรฟ์บนพีซีจะใช้พลังงานน้อยกว่าที่อ่านและเขียนลงบนฮาร์ดไดรฟ์อย่างต่อเนื่อง
Gort the Robot

@StevenBurnap ที่ไม่เกี่ยวข้องขึ้นอยู่กับ HD, HD หมุนและดึงน้ำผลไม้ตลอดเวลา การเพิ่มประสิทธิภาพพลังงานที่สำคัญที่สุดนั้นมาจากฮาร์ดแวร์เสมอ (และไมโครโค้ดในนั้น) ซอฟต์แวร์เดียวกันกับGreen HD จะใช้พลังงานน้อยกว่าดังนั้นฮาร์ดแวร์ยังคงสร้างความแตกต่างได้มากขึ้น

2
นั่นไม่เป็นความจริง แนบ Kill-a-watt เข้ากับระบบของคุณและรันแอพพลิเคชั่นสองตัวตัวแรกที่เพิ่มตัวเลขในวงวนไม่สิ้นสุดและอีกอันที่สแกนไฟล์ขนาด 5 GB ซ้ำ ๆ คุณจะเห็นความแตกต่าง การใช้พลังงานแน่นอนจะแตกต่างกันไปในคอมพิวเตอร์บางครั้งมากขึ้นอยู่กับสิ่งที่ถูกขอให้ทำ
Gort the Robot

นี่คือตัวอย่างที่แสดงการใช้พลังงานของพีซีที่เปลี่ยนแปลงโดยอิงจากซอฟต์แวร์ที่ใช้งานอยู่: codinghorror.com/blog/2005/08/…
Gort the Robot

2

สิ่งที่ดีที่สุดที่คุณสามารถทำได้คือปรับแต่งอัลกอริธึมและตรรกะทางธุรกิจของแอปพลิเคชันของคุณ

นอกจากนี้คุณยังสามารถใช้กระบวนการคอมไพล์โดยเฉพาะอย่างยิ่งโคเดอร์หลายตัวก็ลืมฟังก์ชั่นอินไลน์และการเพิ่มประสิทธิภาพในขั้นตอนการคอมไพล์ซึ่งส่วนใหญ่แล้วจะทำให้คุณได้เปรียบในเรื่องของประสิทธิภาพเล็กน้อย


นี่คือคำตอบที่ถูกต้อง การเพิ่มประสิทธิภาพเป็นวิธีเดียว
superM

1
นี่เป็นคำตอบที่ถูกต้องอย่างไร มีซิงก์กำลังไฟมากกว่าระบบในซีพียู
James

1
@ James ซอฟต์แวร์ของคุณใช้ CPU เท่านั้นหรือ ไม่มีอะไรอีกแล้ว?
user827992

3
@ user827992: ไม่นั่นคือประเด็น สิ่งต่าง ๆ เช่นวิทยุ (GSM / 3G / Wifi) และหน้าจอใช้พลังงานมากกว่า CPU การเพิ่มประสิทธิภาพอัลกอริทึมของคุณจะไม่ช่วยคุณที่นี่ ฉันจะไปไกลถึงจะพูดว่าในระบบที่มีการใช้พลังงานเป็นกังวลการเพิ่มประสิทธิภาพรหัสของคุณคือการเพิ่มประสิทธิภาพก่อนวัยอันควร
James

1
@ user827992: ใช่ แต่การประหยัดเหล่านี้น้อยกว่าเมื่อเทียบกับการใช้พลังงานจากแบตเตอรี่อื่น คุณสามารถปรับให้เหมาะสมกับ -OInfinity ได้ตามต้องการ แต่ถ้าเป็นเช่นนั้นรหัสของคุณจะทำการสำรวจบางสถานะที่คุณตาย
James

2

คำตอบที่ถูกคือ ....

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

มุ่งเน้นการให้คุณค่ากับลูกค้าของคุณ สร้างโซลูชันที่สะอาดเข้าใจง่ายและบำรุงรักษาง่าย

ถ้าคุณต้องการ "พลัง" มากกว่านี้คุณสามารถสร้างโปรไฟล์แอปพลิเคชันของคุณ ด้วยการทำโปรไฟล์คุณจะระบุจุดคอขวดที่เปลี่ยนไปจะให้ประโยชน์มากที่สุดและเพิ่มประสิทธิภาพ "ประสิทธิภาพ"


4
ฉันจะบอกว่าสิ่งนี้ไม่ตอบคำถามเนื่องจากคุณกำลังพูดว่า "การใช้พลังงานไม่ใช่ปัญหาของคุณ แต่ให้ความสำคัญกับคุณค่าของลูกค้า" และมันฟังดูคล้ายกับมนต์การจัดการบางอย่าง OP อาจมีเหตุผลที่ร้ายแรงสำหรับการลดการใช้พลังงาน
K.Steff

ฉันเข้าใจผิด "การใช้พลังงาน" ถึงกระนั้นฉันคิดว่าเขาควรจะตั้งค่าระดับการใช้พลังงานที่เมื่อมาถึงการเพิ่มประสิทธิภาพควรดำเนินการโดยการวิเคราะห์ส่วนต่าง ๆ ของระบบที่กินพลังงานมากเกินไป สิ่งนี้สามารถทำได้โดยการทดสอบความเครียด
Michal Franc

1

แม้ว่าจะเป็นความจริงที่ว่าในแง่ของ CPU นั้นมีอะไรที่ต้องทำมากมาย แต่มักจะมีคุณสมบัติของอุปกรณ์ที่ใช้พลังงานเมื่อใช้งาน บนพีซีส่วนใหญ่ไม่มีใครสนใจ แต่เป็นความจริงอย่างแน่นอนว่าการอ่านดิสก์จะทำ (สมมติว่าไม่ใช่ไดรฟ์ SSD) ทำให้ฮาร์ดไดรฟ์หมุนและหัวเพื่อเคลื่อนที่ซึ่งจะกินพลังงานบ้างเล็กน้อย บนพีซีนี่เป็นเรื่องเล็กน้อย แต่บนอุปกรณ์พกพานี่อาจเป็นปัญหาที่แท้จริง

บนโทรศัพท์ตัวอย่างที่ชัดเจนที่สุดคือการสื่อสาร การส่งสัญญาณไร้สายใช้พลังงาน บนพีซีที่เชื่อมต่อกับแหล่งจ่ายไฟ 500 วัตต์นั้นไม่สำคัญ ในโทรศัพท์มันไม่ได้เป็น แอปพลิเคชันที่สำรวจเซิร์ฟเวอร์อย่างต่อเนื่องสำหรับข้อมูลจำนวนมากจะใช้พลังงานมากกว่าที่ไม่มีเครือข่ายเลย

นี่เป็นปัญหาที่แท้จริงมากเพียงแค่ google สำหรับ "แอปพลิเคชัน Android ใช้พลังงานจากแบตเตอรี่ของฉัน" นี่คือหนึ่งในหลาย ๆ หน้าที่บอกผู้พัฒนาวิธีการลดการใช้พลังงาน

โดยทั่วไปคุณต้องการปรับให้เหมาะสมสำหรับประสิทธิภาพโดยทั่วไป (เช่นทำให้ CPU มากที่สุดเท่าที่จะเป็นไปได้) และสำหรับการใช้เครือข่าย สื่อสารให้น้อยที่สุดเท่าที่จะทำได้ด้วยข้อความเล็กที่สุดเท่าที่จะทำได้

ดังที่คนอื่นได้กล่าวมานี่เป็นภารกิจหลังจากรหัสส่วนใหญ่ของคุณเสร็จสมบูรณ์เมื่อคุณระบุปัญหาและการใช้พลังงานที่ทำโปรไฟล์ไว้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.