애플리케이션이 전력 소비에 실질적인 영향을 줄 수 있습니까? 방식으로 전력

단일 범용 응용 프로그램에서 실행중인 장치의 전력 소비에 영향을 줄 수있는 작업이 있습니까?

개별 응용 프로그램에 대한 최적화가 일반적인 방식으로 전력 소비에 영향을 줄 수있는 방법에 익숙하지 않습니다. 응용 프로그램 작성에 대한 다른 접근 방식이 실행중인 장치의 전력 소비에 영향을 미치는지 설명 할 수 있습니까?

즉, 서로 다른 방식으로 작성된 다른 프로그램이 장치의 전력 소비에 어떻게 영향을 미치는지가 아니라 다른 방식으로 작성된 동일한 기능을 수행하는 단일 프로그램이 일반적으로 장치의 전력 소비에 크게 영향을 줄 수 있습니다.



답변

전력 소비 문제는 종종 성능을 저하 시키므로 균형을 유지해야합니다. 보다 효율적인 하드웨어를 고려하기 위해 자본 비용 회계를 적용하면 매우 복잡한 트레이드 오프가됩니다. (시간당 밀리 와트 / 시간을 절약하기 위해 100 시간을 소비하거나 소프트웨어를 실행하는 컴퓨터에서보다 효율적인 PSU를 위해 $ 10를 소비합니까?) 전력 소비 (소프트웨어로 인한)에 대해 상업적으로 이해해야 할 유일한 시간은 Google이 실행하는 서버 팜, 배터리 구동 장치 및 마케팅이 Tree Hugging Greenie 상자에 표시를 원하는 경우입니다.

“알고리즘을 더 효율적으로 만드십시오”라고 말하면 사소 해지기에는 너무 복잡합니다. 첫 번째 단계입니다. 성능 / 전력 곡선, 특히 “인식 성능”/ 전력 곡선은 비선형입니다. 사용중인 OS를 통해 제어 할 수있는 수준과 수준에 따라 다릅니다.

그 외에도 질문은 각 특정 상황에 대해 다른 답변을 갖습니다. 예를 들어, 한 번은 잠자기보다 짧은 시간 동안 최대 클럭 속도로 실행되는 전력 효율이 더 높은 배터리 구동 시스템 (9V 셀에서 18 개월을 목표로 한)에서 작업했지만 비슷한 소프트웨어를 실행하는 다른 마이크로는 느린 클럭에서 틱하는 것이 좋습니다. 잠깐 동안 자요


답변

가장 좋은 방법은 알고리즘과 응용 프로그램의 비즈니스 논리를 최적화하는 것입니다.

또한 특정 컴파일 프로세스를 채택 할 수 있으며 많은 코더는 컴파일 단계에서 인라인 함수와 최적화를 잊어 버립니다. 대부분의 경우 성능 측면에서 전력 소비 최적화 측면에서 작은 우위를 제공합니다.


답변

정답은 ….입니다.

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

고객에게 가치를 제공하는 데 집중하십시오. 깨끗하고 이해하기 쉽고 유지 관리하기 쉬운 솔루션을 만듭니다.

그런 다음 “전원”이 더 필요한 경우 응용 프로그램을 프로파일 링 할 수 있습니다. 프로파일 링을 사용하면 변경시 가장 큰 이점을 제공하고 “효율”을 높일 수있는 병목 지점을 찾아 낼 수 있습니다.


답변

CPU 측면에서 수행해야 할 작업이 많지 않은 것이 사실이지만, 사용시 전력을 소비하는 장치의 기능이 종종 있습니다. PC에서는 대부분 아무도 신경 쓰지 않지만 디스크 읽기 (SSD 드라이브가 아닌 것으로 가정)로 인해 하드 드라이브가 회전하고 헤드가 움직여 약간의 전력이 소비된다는 것은 사실입니다. PC에서 이것은 사소한 것이지만 모바일 장치에서는 이것은 매우 실제적인 문제가 될 수 있습니다.

전화에서 가장 명백한 예는 통신입니다. 무선 신호를 보내려면 에너지가 필요합니다. 500WATT 전원 공급 장치에 연결된 PC에서는 중요하지 않습니다. 휴대 전화에서는 그렇지 않습니다. 대량의 데이터에 대해 서버를 지속적으로 폴링하는 응용 프로그램은 네트워크를 전혀 사용하지 않는 응용 프로그램보다 훨씬 더 많은 전력을 사용합니다.

이것은 “Android 응용 프로그램에서 배터리를 소모했습니다”라는 Google의 매우 실제적인 문제입니다. 다음 은 개발자에게 전력 소비를 최소화하는 방법을 알려주는 많은 페이지 중 하나입니다.

일반적으로 일반적으로 성능을 최적화하고 (즉, CPU를 최대한 많이 사용) 네트워크 사용을 최적화하려고합니다. 가능한 한 작은 메시지로 가능한 적은 의사 소통하십시오.

다른 사람들이 말했듯이, 이것은 문제를 식별하고 전원 사용을 프로파일 링했을 때 대부분의 코드가 완료된 후에 수행되는 작업입니다 .


답변