無疑,最近我們身邊最熱點的話題就是“節能減排”了,MJ在《Heal The World》中有句經典的歌詞:
If you care enough for the living
Make a little space
Make a better place ...
Heal the world
作為一個程式員,我們是不是也要多多為我們的美好家園考慮一下?
說到這裡,有程式員就笑了,咱們窮,買不起車,基本屬於“無尾氣排放”,呵呵,我承認,天天靠人力上下班,既鍛煉身體又保護環境,咱們個個都能稱得上“環保主義者”。
換個角度,我們手底下的代碼,是不是也能為“節能減排”做貢獻呢?
我們程式員最直接的工具就是電腦,電腦的能源浪費主要存在三個方面(參見《Communications of the ACM》):
(1)電費消耗。註:個人感覺這個消耗不僅僅取決於硬體,軟體也是很重要的一個因素
(2)電力消耗產生的熱量。註:中心機房除了伺服器的電力消耗外,空調肯定也是用電大戶,為了抵消伺服器產生的熱量,空調要付出更大的電量消耗。
(3)產生二氧化碳,加劇全球溫室效應。
怎樣“節能減排”呢?我大概想到了如下幾點,算是拋磚引玉,希望大家多多補充:
(1)減少記憶體的佔用。記憶體佔用是要消耗電能的,佔用越少,意味著越少電能的消耗。
(2)減少記憶體與硬碟之間資料的頻繁操作。無疑這種頻繁操作會消耗比較多的電能,磁碟、CPU、各種控制單元都要參與其中,如果跟記憶體佔用相比,這種操作的消耗要大得多。
(3)減少網路資料轉送。
(4)多個任務合并,比如讀寫磁碟,把多次讀寫磁碟操作合并到一次磁碟旋轉過程,這樣會減少磁碟的機械運動,從而節約電能。
(5)合理的資料庫設計,減少資料冗餘,增加合理的索引,建立合適的視圖,合理使用預存程序,這些都能減少資料庫伺服器的負擔,從而節省電力。
(6)充分利用淘汰的裝置,可以利用雲端運算思想,把淘汰的裝置充分利用,組成一片雲,繼續提供服務,延長這些裝置的壽命,意味著我們可以不購入新裝置,呵呵,降低新裝置的產量,也是一種間接地節省能源啊。
暫時就考慮了這麼多,下次上課,給學生也布置這麼一個作業,看看大家還有什麼更好的想法。