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


16

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

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

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


8
보다 효율적으로 수행하십시오.
Christopher Berman

나는 당신의 질문이 주제를 벗어난 것은 아니지만 Q & A 사이트의 답변보다 책이 더 적합 할 것이라고 생각합니다. 이 임베디드 시스템, 모바일 개발 또는 완전히 다른 것과 같은 컨텍스트를 제공해야합니다. 모든 대답은 그것에 크게 의존해야합니다.
K.Steff

2
배터리 구동 임베디드 시스템에 대해 이야기하고 있습니까? 일반적으로 전력 소비를 최소화하는 열쇠는 시스템이 실제로 많은 일을 할 필요가없는 시간을 식별하고 시스템에 실제로 아무것도 없을 때 시스템의 일부가 활성화되는 시간을 최소화하는 것입니다. 할 것. 대부분의 경우 얼마나 많은 노력이 가치가 있는지에 대한 명확한 한계가 있습니다. 장치가 필요한 기능에 1mAH / day를 사용할 경우 10uAH / day를 낭비하는 간단한 루틴이 1uAH / day 만 낭비하는 복잡한 루틴보다 선호 될 수 있습니다 (후자는 에너지를 1 % 만 절약하기 때문에).
supercat

1
나는 문맥이 아닌 일반적인 것으로 생각하고있었습니다. '호기심을위한'질문이었습니다. 그러나 예를 들어 모바일 장치의 절전에 대한 규칙이 있습니까? 또는 임베디드 시스템? 또는 웹 응용 프로그램 개발? 디스크 액세스 및 네트워킹 등이 지연 될 수 있습니다.
Juan Manuel

1
당신이 요점을 놓치고 있다고 생각합니다. 라디오를 절반 만 사용하도록 응용 프로그램을 변경하면 해당 응용 프로그램을 실행할 때 전력 소비가 줄어 듭니다. 전화기의 라디오가 일정한 속도로 전원을 공급받지 않습니다. 전원 소모는 소프트웨어에서 요청한 사항에 따라 다릅니다.
로봇

답변:


7

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

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

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


이것은 정답은, 하드웨어가 훨씬 더 재생 실제로 정서적 소프트웨어보다 전력 소비의 역할을. 보다 효율적인 PSU의 예는 모든 장치를 만들고 단일 응용 프로그램의 미세 최적화를 어둡게하여 중요하지 않은 기여를합니다.

예, 그러나 프로그램은 장치의 모든 하드웨어 비트를 동일하게 사용하지는 않습니다. 예를 들어, PC에서 하드 드라이브를 사용하지 않는 프로그램은 하드 드라이브에서 지속적으로 읽고 쓰는 프로그램보다 훨씬 적은 전력을 사용합니다.
로봇

@StevenBurnap은 HD, 일부 HD 스핀 및 풀 주스에 따라 항상 관련이 없습니다. 가장 중요한 전력 최적화는 항상 하드웨어 (및 마이크로 코드)에서 나옵니다. Green HD가 있는 동일한 소프트웨어 는 더 적은 전력을 사용하므로 하드웨어는 여전히 더 많은 차이를 만듭니다.

2
사실이 아닙니다. Kill-a-watt를 시스템에 연결하고 두 개의 응용 프로그램을 실행하십시오. 첫 번째는 무한 루프에 숫자를 추가하고 다른 하나는 5GB 파일을 반복적으로 스캔합니다. 당신은 차이를 볼 수 있습니다. 전력 소비량은 컴퓨터의 요구에 따라 때로는 극적으로 달라질 수 있습니다.
로봇

다음은 순수하게 실행중인 소프트웨어를 기반으로 PC의 전력 소비 변화를 보여주는 예입니다 : codinghorror.com/blog/2005/08/…
로봇 고트 로봇

2

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

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


이것이 정답입니다. 최적화가 유일한 방법입니다.
superM

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

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

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.