Các ứng dụng có thể ảnh hưởng đến mức tiêu thụ điện năng một cách đáng kể?


16

Có bất cứ điều gì có thể được thực hiện cho một ứng dụng mục đích chung duy nhất để ảnh hưởng đến mức tiêu thụ năng lượng của thiết bị mà nó đang chạy không?

Tôi không quen với việc tối ưu hóa cho các ứng dụng riêng lẻ có thể ảnh hưởng đến mức tiêu thụ điện theo cách chung, ai đó có thể giải thích nếu các cách tiếp cận khác nhau để viết ứng dụng ảnh hưởng đến mức tiêu thụ điện của thiết bị họ đang chạy không?

Đó là, có thể một chương trình duy nhất, thực hiện chính xác cùng một chức năng, được viết theo nhiều cách khác nhau ảnh hưởng mạnh đến mức tiêu thụ điện của thiết bị nói chung, không phải về việc các chương trình không liên quan khác nhau có thể ảnh hưởng đến mức tiêu thụ điện của thiết bị như thế nào.


8
Làm cho nó thực hiện hiệu quả hơn.
Christopher Berman

Tôi không nói rằng câu hỏi của bạn hoàn toàn lạc đề, nhưng tôi nghĩ rằng một cuốn sách sẽ phù hợp hơn là một câu trả lời trong trang web hỏi đáp. Bạn nên cung cấp ít nhất một số bối cảnh, như hệ thống nhúng này, phát triển di động hoặc một cái gì đó hoàn toàn khác. Bất kỳ câu trả lời nên phụ thuộc rất nhiều vào điều đó.
K.Steff

2
Bạn đang nói về các hệ thống nhúng chạy bằng pin? Nói chung, chìa khóa để giảm thiểu tiêu thụ năng lượng là xác định thời gian mà hệ thống thực sự sẽ không phải làm nhiều và giảm thiểu thời gian mà bất kỳ phần nào của hệ thống sẽ hoạt động khi thực sự không có gì cho nó làm. Trong hầu hết các trường hợp, sẽ có một giới hạn khá rõ ràng về mức độ nỗ lực đáng giá; nếu một thiết bị sẽ sử dụng 1mAH / ngày cho các chức năng cần thiết, một thói quen đơn giản gây lãng phí 10uAH / ngày có thể tốt hơn so với một thiết bị phức tạp chỉ lãng phí 1uAH / ngày (vì sau này chỉ tiết kiệm được 1% năng lượng).
supercat

1
Tôi đã suy nghĩ trong một cái gì đó chung chung, không phải với một bối cảnh nói riêng. Đó là một câu hỏi "chỉ vì tò mò". Nhưng ví dụ, có bất kỳ quy tắc nào cho việc cấp nguồn trên thiết bị di động không? hoặc hệ thống nhúng? hoặc phát triển ứng dụng web? Có thể trì hoãn truy cập đĩa và mạng hoặc những thứ tương tự.
Juan Manuel

1
Tôi nghi ngờ bạn đang thiếu điểm. Nếu bạn thay đổi một ứng dụng để sử dụng radio một nửa, bạn sẽ thấy mức tiêu thụ điện năng khi ứng dụng đó chạy xuống. Radio trên điện thoại không tiêu thụ điện ở tốc độ không đổi. Nó tiêu hao năng lượng phụ thuộc trực tiếp vào những gì nó được yêu cầu bởi phần mềm.
Gort Robot

Câu trả lời:


7

Mối quan tâm tiêu thụ điện năng thường gây bất lợi cho hiệu suất, vì vậy hai cần phải được cân bằng. Áp dụng chi phí kế toán vốn để xem xét phần cứng hiệu quả hơn, và nó trở thành một sự đánh đổi rất phức tạp. (đơn giản là bạn dành 100 giờ để tiết kiệm một milliwatt / giờ, hoặc 10 đô la cho một PSU hiệu quả hơn trong các công cụ truyền thông chạy phần mềm). Lần duy nhất có ý nghĩa thương mại là lo lắng về mức tiêu thụ năng lượng (do phần mềm gây ra) là một máy chủ có kích thước Google chạy, thiết bị chạy bằng pin và nếu tiếp thị muốn đánh dấu vào hộp Tree Hugging Greenie.

Quá phức tạp để tầm thường hóa nó bằng cách nói "Làm cho bạn thuật toán hiệu quả hơn" - đó chỉ là bước đầu tiên. Đường cong hiệu suất / sức mạnh và đặc biệt là "hiệu suất cảm nhận" / đường cong sức mạnh là phi tuyến tính. Nó phụ thuộc nếu bạn có quyền kiểm soát và mức độ thông qua hệ điều hành đang sử dụng.

Ngoài ra, câu hỏi sẽ có câu trả lời khác nhau cho từng tình huống cụ thể. Chẳng hạn, tôi đã từng làm việc trên một hệ thống chạy bằng pin (nhắm mục tiêu 18 tháng cho một tế bào 9V) có hiệu suất năng lượng cao hơn khi chạy ở tốc độ xung nhịp tối đa trong thời gian ngắn hơn là ngủ, nhưng một phần mềm tương tự khác chạy tốt hơn trên đồng hồ chậm Trong một phút hoặc lâu hơn thì ngủ.


đây thực sự là câu trả lời đúng, phần cứng đóng nhiều hơn nữa cảm vai trò trong việc tiêu thụ điện năng hơn so với phần mềm. Ví dụ về một PSU hiệu quả hơn làm cho TẤT CẢ thiết bị và làm lu mờ tối ưu hóa vi mô của các ứng dụng đơn lẻ làm cho chúng đóng góp không đáng kể.

Có, nhưng một chương trình không sử dụng mọi bit phần cứng trên thiết bị như nhau. Ví dụ, một chương trình không bao giờ sử dụng ổ cứng trên PC sẽ sử dụng ít năng lượng hơn đáng kể so với chương trình liên tục đọc và ghi vào ổ cứng.
Gort Robot

@StevenBurnap không liên quan tùy thuộc vào HD, một số quay HD và kéo nước trái cây mọi lúc. Tối ưu hóa năng lượng đáng kể nhất sẽ luôn đến từ phần cứng (và microcode trong đó). Phần mềm tương tự với Green HD sẽ sử dụng ít năng lượng hơn, do đó phần cứng vẫn tạo ra nhiều sự khác biệt.

2
Điều đó không đúng. Đính kèm Kill-a-watt vào hệ thống của bạn và chạy hai ứng dụng, ứng dụng đầu tiên chỉ thêm số trong một vòng lặp vô hạn và một ứng dụng quét tệp 5 GB liên tục. Bạn sẽ thấy một sự khác biệt. Tiêu thụ điện năng chắc chắn sẽ khác nhau trên một máy tính, đôi khi đáng kể, tùy thuộc vào những gì nó được yêu cầu làm.
Gort Robot

Dưới đây là một ví dụ cho thấy sự thay đổi mức tiêu thụ năng lượng của PC hoàn toàn dựa trên phần mềm nào đang chạy: mã hóa kinh dị.com / blog / 2005/08 / ám
Gort the Robot

2

Điều tốt nhất mà bạn có thể làm là tối ưu hóa các thuật toán và logic nghiệp vụ của ứng dụng.

Bạn cũng có thể áp dụng một quy trình biên dịch cụ thể, nhiều lập trình viên chỉ quên các chức năng nội tuyến và tối ưu hóa trong giai đoạn biên dịch, phần lớn thời gian này mang lại cho bạn một lợi thế nhỏ về hiệu suất và do đó, về mặt tối ưu hóa tiêu thụ điện năng.


Đây là câu trả lời đúng. Tối ưu hóa là cách duy nhất.
superM

1
Làm thế nào đây là câu trả lời đúng? Có nhiều năng lượng chìm trong một hệ thống hơn CPU.
James

1
@James phần mềm của bạn chỉ sử dụng CPU? không có gì khác
dùng827992

3
@ user827992: Không, đó là điểm chính. Những thứ như radio (GSM / 3G / Wifi) và màn hình tiêu thụ nhiều năng lượng hơn nhiều so với CPU. Tối ưu hóa các thuật toán của bạn sẽ không giúp bạn ở đây. Tôi muốn đi xa hơn để nói rằng trong hệ thống mà tiêu thụ năng lượng là một mối quan tâm, tối ưu hóa mã của bạn là một tối ưu hóa sớm.
James

1
@ user827992: Có nhưng những khoản tiết kiệm này rất nhỏ so với các nguồn tiêu thụ pin khác. Bạn có thể tối ưu hóa thành -Tất cả tất cả những gì bạn thích, nhưng nếu ví dụ, mã của bạn bỏ phiếu một số cờ ở đâu đó bạn đã chết.
James

2

Câu trả lời đúng là ....

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

Tập trung vào việc cung cấp giá trị cho khách hàng của bạn. Tạo giải pháp sạch sẽ, dễ hiểu và dễ bảo trì.

Sau đó, nếu bạn cần thêm "sức mạnh", bạn có thể lập hồ sơ cho ứng dụng của mình. Với hồ sơ, bạn sẽ xác định được các điểm nghẽn mà khi thay đổi, sẽ mang lại lợi ích lớn nhất và tăng "hiệu quả".


4
Tôi nói điều này không trả lời câu hỏi, vì bạn đang nói "Tiêu thụ điện năng không phải là vấn đề của bạn; tập trung vào giá trị cho khách hàng". Và nó có vẻ rất giống như một số thần chú quản lý. OP có thể có lý do chính đáng để yêu cầu mức tiêu thụ điện năng thấp hơn.
K.Steff

Vâng, tôi đã hiểu nhầm "tiêu thụ năng lượng". Tuy nhiên, tôi nghĩ rằng anh ta nên thiết lập một mức tiêu thụ năng lượng mà khi đạt được, tối ưu hóa nên được thực hiện bằng cách phân tích các phần của hệ thống đang ăn quá nhiều năng lượng. Điều này có thể được thực hiện bởi một loạt các bài kiểm tra căng thẳng.
Michal Franc

1

Mặc dù đúng là về mặt CPU không có nhiều việc phải làm, nhưng thường có các tính năng của thiết bị tiêu thụ năng lượng khi sử dụng. Trên PC, hầu như không ai quan tâm, nhưng điều chắc chắn là việc đọc đĩa sẽ (giả sử ổ đĩa không phải ổ SSD) khiến ổ cứng quay và đầu di chuyển, sẽ tiêu tốn một chút năng lượng. Trên PC, điều này là không đáng kể, nhưng trên thiết bị di động, đây có thể là một vấn đề rất thực tế.

Trên điện thoại, ví dụ rõ ràng nhất về điều này là thông tin liên lạc. Gửi một tín hiệu không dây mất năng lượng. Trên PC, được kết nối với nguồn điện 500 WATT, điều này không quan trọng. Trên điện thoại, nó không phải là. Một ứng dụng liên tục thăm dò máy chủ để có lượng dữ liệu lớn sẽ sử dụng nhiều năng lượng hơn so với ứng dụng hoàn toàn không sử dụng mạng.

Đây là một vấn đề rất thực tế, chỉ cần google cho "ứng dụng Android làm cạn kiệt pin của tôi". Đây là một trong nhiều trang nói với các nhà phát triển cách giảm thiểu tiêu thụ năng lượng.

Nói chung, bạn muốn tối ưu hóa cho hiệu suất nói chung (nghĩa là làm cho CPU càng nhiều càng tốt) và cũng để sử dụng mạng. Giao tiếp càng ít càng tốt với các tin nhắn nhỏ nhất có thể.

Như những người khác đã nói, đây là một nhiệm vụ sau khi hầu hết mã của bạn hoàn tất, khi bạn đã xác định được một vấn đề và việc sử dụng năng lượng được định hình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.