在[IADP] Intel AppUp Developer Program簡介一文中跟各位分享了關於IADP的簡單介紹,相信有不少朋友應該開始躍躍欲試,想動手下去開發了吧!? 不過,先別急~~停下來看看這篇文章,這篇不會看到程式碼,但是有容易被忽略掉的小「眉角」-- 沒錯~就是電子產品不可或缺的--「電」!!
前言
在[IADP] Intel AppUp Developer Program簡介一文中跟各位分享了關於IADP的簡單介紹,相信有不少朋友應該開始躍躍欲試,想動手下去開發了吧!? 不過,先別急~~停下來看看這篇文章,這篇不會看到程式碼,但是有容易被忽略掉的小「眉角」-- 沒錯~就是電子產品不可或缺的--「電」!!
或許你會覺得奇怪,我只是想寫程式啊~跟電有什麼關係啊? 別忘了~ IADP目前是主推在筆電和小筆電上使用的,未來可能會擴展到其他行動裝置上,而這些裝置都有同一個特性--它們得裝電池,也就是說,除非到時候使用我們開發出來的軟體的裝置,除非它一直接著電源,不然電源可能就有會被用光的時候,而且,通常效能和耗電量會成正比。所以這篇主要就是要跟各位分享幾個容易被忽略掉的環節,如果沒注意到這幾個小地方,可能使用者使用我們開發出來的軟體使用得很開心,電也耗得很開心,可能用不了多久,電池就乾了,這時候,比較不懂3C商品的使用者可能會覺得是機器本身的問題,但是如果是老玩家的話~~矛頭就會指向我們開發的軟體啦~這時候可能會造成的後果可不堪設想,為了防患未然,所以請在開發前先想想如何避免因為軟體的設計不良而造成耗電過快的情況喔!!
因為電源對於各種裝置來說,都是一個事關重大的因素,所以在Intel官網上也有一個這個議題相關的連結:Creating Energy-Efficient Software (另有PDF檔可供下載)
不過,要看完這一大串落落長的注意事項(只有英文版),應該要花不少的時間,所以我就稍作了些整理,也一併分享給有興趣的朋友們。
切入正題
關於電源管理,主要可以切分為以下幾個需要注意的項目:
1. 天生的裝置背景因素 - 裝置本身的電源管理檔
目前的筆電和小筆電都會預設有裝置本身的電源管理功能,在不同的情境下,不同的硬體裝置會使用不用的耗電量,Intel官網也有提供可以參考的圖表:
圖一:一般移動裝置上各硬體在不同使用情境下的耗電量(不含螢幕) |
而在不同的情境下,裝置本身的效能也會受到影響,所以,在設計軟體的時候,也儘量一開始把會使用到的硬體納入考慮,例如硬碟的存取或是光碟機的存取,耗電量就會有差喔!!
2. 運算的效率 - 多執行緒的處理
目前越來越多的裝置都搭載多核心的CPU,而程式中也可以撰寫使用多執行序來處理不同的工作,以達到提高運算效能的目的,但是相對的,也得付出耗電量提高的代價。
比較特別的是,在多執行緒中,分為兩種模式,分別是平衡式的執行緒處理以及非平衡式的執行緒處理。簡單來說,平衡式的處理方式會由各自的處理圖型化物件(還有在背景模式運作的圖像)與解析度相對的關係相關的繪製和衝突管理;而非平衡式的處理方式,則會有一個執行緒得額外去負責處理畫面中與解析度或物件的衝突相關的繪製工作。從下方的圖表中,我們也能發現,只要使用正確的多執行緒處理方式,在省電模式下,也可以得到高效能喔!!另外,微軟也提供一個GV3 hotfix (KB896256)的更新檔給XP使用 ,也可以有效的改善多核心或支援HyperThreading CPU機種在多執行緒下的效能。
圖二:使用平衡式多執行緒處理的效能 |
圖三:使用非平衡式多執行緒處理的效能 |
圖四:在使用不同執行緒和不同電源管理模式下的耗電量 |
3. 讀寫以及無線網路存取
硬碟和光碟等儲存設備在平常待命的時候是相對省電的,但是在馬達做加速(開始做讀/寫)動作的時候,瞬間的耗電量就很驚人,以及做無線傳輸的時候,也會依照資料的壓縮比有不同的耗電量,所以如果軟體需要進行資料的讀寫或是得透過無線網路進行傳輸的話,千萬要在一開始就設計好,把進行這類動作的機會和時間儘量降低,以避免消耗過多的電量。
4. 螢幕裝置的耗電量
前面的各項測試都刻意的避開螢幕的耗電量,也因為各種裝置的螢幕大小和種類不同,加上目前的筆電都能調整亮度,耗電量也就會隨之有差異,尤其是在聲光效果要求越來越高的遊戲軟體,耗電量則更是驚人。如果您想開發的是遊戲或是其他使用者介面會比較華麗的軟體,就得注意得儘可能的讓螢幕在低亮度、低解析度下還能順利運作,如果可能的話,也可以請負責設計使用者介面的設計師儘量設計出低亮度高對比下還能使用的介面,這樣也能有效的降低耗電量喔!!
這次的分享就到這邊結束~希望有幫助到有興趣加入開發行列的朋友~避免因為一時的沒注意而踩到地雷喔!!
(P.S. 本文中效能、耗電量相關圖片擷取自Intel官網,若有解析度不足或不夠清楚之處,還尚請見諒!!)