編寫怎樣的代碼能使計算機發熱效率最高?

偶然在微博上看到下圖這個,然後作為一個典型的理工男不慎陷入了深深的思考,什麼樣的代碼能提高計算機的發熱效率呢?真的是故事中幾行代碼就可以的么?不要告訴我寫個死循環就行了,用python試過,貌似效果不是很明顯。

---------------------------------------------
我覺得這個問題很有研究價值啊,比如冬天給自己寫個手機暖手寶應用什麼的。。。。。


只是發熱的話很容易,其它答案基本都能發熱,但要想發熱效率高,就要考慮很多東西了:

1 單是普通循環不夠,要用多線程,讓所有核都運轉
2 不要用高級的語言/script,高級語言/script會定期交出控制,導致cpu獨佔性不強。
3 不要單讓cpu忙,內存也要忙,所以循環中要有內存操作。
4 比起cpu/mem來,顯卡才是發熱大戶,所以循環中要有3d顯示操作。
5 硬碟雖然發熱也不少,但硬碟io操作可能會導致cpu空閑,如果想讓硬碟也加入發熱大軍,需要用非同步方式。


如果你裝了nVidia的顯卡,可以寫幾個CUDA程序處理大批量數據。之前有同學做live presentation,用筆記本跑了一個CUDA程序,20分鐘多點就自動關機了。一摸,電池能量都用來發熱了。


貌似問題演變成低效率程序大比拼了⊙▽⊙

話說回來用Python不行的,它的多線程不能有效驅動所有核心運轉。用C寫一個吧,其實也不用考慮多線程的事兒。先來一個while(2)循環在裡邊寫幾條四則運算,再控制一下變數上限不要導致溢出,最後編譯出來開它三五個程序同時運行就好了。你男友沒說錯,真的就是「Easy to get heat"呢。

別忘了設置合蓋之後不要休眠 :-)


運行3dmax或烤機軟體即可。


似乎很容易讓機器自己吐槽「燙燙燙燙燙」


其實和編程關係不大

拿筆記本來說,擋住風扇散熱口,然後打開坦克世界。


很多傳統的烤機程序並不能讓新世代的Intel CPU真正滿載。自Sandybridge以來,能夠將CPU推至極限能耗的程序只有Linpack--因為其能充分利用AVX浮點單元、FMA3乘加指令。


需要那麼複雜么?讓女人隨便玩一會,機器就熱了,還不會溫度高到傷害硬體和電池。


Mac上裝Windows然後隨便開幾個chrome
#突然發現是要代碼………


小米


如果是支持AVX1/2的CPU,用不用AVX發熱量相差巨大。

比如同樣的CPU,Prime95的發熱程度,明顯弱於x265(profile: slower,source: 1080p AVC)。

註:多路需要跑多個x265進程,每個進程用--pools 參數限定在單個CPU上。


除了python自己的特點之外,感覺主要還是跟硬體相關。硬體老化,哪怕用SPSS跑回歸也會變烤爐。
去年,跑回歸,數據不大,我那台5年的機器直接跑退休了。。


把風扇停掉


開幾個虛擬機,各跑幾個大型3D遊戲,就能當電吹風使了


隨便寫個代碼都可以很有效。
我做了個實驗。
Macbook的金屬外殼可以讓溫度有直觀的體現。

隨便寫個死循環:

int main(int argc, const char * argv[]) {

int i = 0;

while (1) {

i +=1;

i -=1;

}

return 0;

}


然後編譯一下:

cc main.c

然後多跑幾個進程:

for ((i = 0; i &< 20; i++)); do ./a.out done;

跑20個吧,差不多行了,至少跑四個吧。


查查溫度,一會兒就穩定在76攝氏度了。

再稍等等,摸一摸,夠用了。


啊對了,記得把這堆東西關掉啊:

killall a.out


推薦閱讀:

如何高效的識別出網路爬蟲?
MATLAB循環嵌套的優化,可否改成矩陣運算?
一個N*N的矩陣,取值為0或1,有什麼好的演算法判斷一行或一列全為1啊?
卡爾曼濾波器是如何運用於多感測器融合的?
MD5加密相比於其他加密有什麼好處?

TAG:程序員 | 演算法 | 計算機 | 多核 |