全世界只有我們Erlang程序員是正確的

全世界只有我們是正確的,其他的全錯(cuò)了。我們(Erlang程序員)找到了癥結(jié)并正確的解決了問題,所有的其他人(非Erlang人)都找錯(cuò)了方向,解決了錯(cuò)誤的問題。
全世界其他人想解決的問題是如何讓現(xiàn)存的程序能并行執(zhí)行。2004年之前,摩爾定律一直有效。每年我們的程序執(zhí)行都會(huì)變得更快,我們不需要成為一個(gè)優(yōu)秀的程序員,我們不需要掌握更優(yōu)化的算法就能讓程序一年比一年更快。
芯片越來越大,時(shí)鐘速度越來越快,程序運(yùn)行速度越來越快,每年大概以15%幅度的性能提升。
到了2004年,這些現(xiàn)象終止了。芯片已經(jīng)足夠大,時(shí)鐘的速率已經(jīng)快到在一個(gè)時(shí)鐘周期內(nèi)時(shí)鐘脈沖不能到達(dá)芯片的所有部分。電路設(shè)計(jì)開始改變。多核處理器出現(xiàn)。
從2004年開始,芯片的體積仍然在增大,但時(shí)鐘的速率開始變小,每個(gè)芯片上的CPU數(shù)量開始增加。我們從每一個(gè)芯片只有一個(gè)超級(jí)處理器的時(shí)代進(jìn)入到每個(gè)芯片有多個(gè)速度較慢、性能較弱的多核處理器時(shí)代。
由此開始,順序執(zhí)行的程序顯得越來越慢,一年慢過一年,而并行執(zhí)行的程序開始變得越來越快。
問題是,根本沒有并行執(zhí)行的程序,有也是極少。
而Erlang是一種具有并發(fā)特征的編程語言,所以Erlang程序本質(zhì)上在具有并行能力的計(jì)算機(jī)上運(yùn)行時(shí)要比其它程序都快的多。而唯一能阻擋它運(yùn)行的更快的問題就是Erlang程序中可能存在一些必須順序執(zhí)行的瓶頸。
并行程序中有需要順序執(zhí)行的部分,這正應(yīng)驗(yàn)了Amdahl定律。
假設(shè)你的程序中有10%是需要順序執(zhí)行的(其余部分可以并行),可以并行的部分的執(zhí)行時(shí)間可以壓縮近似0——只要有足夠的可以并行的處理器。但順序執(zhí)行部分的時(shí)間無法縮減。
如果程序中含有10%的需要順序執(zhí)行的代碼,你的程序執(zhí)行速度***能提高10倍。其中1/10的程序的速度永遠(yuǎn)無法提高,其它9/10的程序的執(zhí)行時(shí)間可以縮減至接近0。
所以,對(duì)于Erlang程序員來說,提高他們的程序的運(yùn)行速度的技巧就是找出代碼中需要順序執(zhí)行的部分。
而對(duì)于任何對(duì)于其他編寫順序執(zhí)行程序的程序員來說,提高他們程序速度的方法是找出他們程序中可以并行執(zhí)行的部分。
讓串行程序自動(dòng)并行化的征途鋪滿荊棘,無法走通。(并不完全是這樣,在某些特殊環(huán)境中是可以實(shí)現(xiàn)的,但絕非易事)。
現(xiàn)在的數(shù)據(jù)中心了都排滿了酷炫的新型計(jì)算機(jī),某些***的配置里擁有多達(dá)24核。但它們的性能呢?這些酷炫的新機(jī)器能快24倍嗎?
對(duì)某些程序來說是的,但對(duì)大多數(shù)程序來說不是。對(duì)大多數(shù)程序來說24個(gè)CPU中只有一個(gè)被利用。CPU的低利用率成了一個(gè)嚴(yán)重的問題。這點(diǎn)正印證了Alexander Gounares
Brilliant在Erlang factory談到的問題。
Alexander的演講讓我們隱約看到了未來。他開創(chuàng)concurix讓我們看到了未來的方向。他們正在開發(fā)工具能自動(dòng)找出Erlang代碼中需要順序執(zhí)行的瓶頸。
Concurix使用這些工具來發(fā)現(xiàn)Erlang虛擬機(jī)中的瓶頸,在他們的測(cè)試中顯示了驚人的結(jié)果。他們找到了一個(gè)圖片處理應(yīng)用中的瓶頸,它是zlib庫中的一個(gè)程序鎖,是用C寫成的。他們用Erlang重寫了它,用Erlang替換了C代碼。
這真是不可思議,C程序本應(yīng)更快,事實(shí)也是,但它卻有個(gè)同步鎖。Erlang程序相比之下要慢,但沒有狀態(tài)鎖,這賦予了它提升能力的機(jī)會(huì)。去掉了C代碼后,用Erlang寫成的圖片處理應(yīng)用比原始的C程序快了很多。
我很吃驚——驚奇于這樣的好東西的出現(xiàn)。
當(dāng)Alexander在Erlang factory的演講視頻出來之后,你們觀看時(shí)準(zhǔn)備好驚奇吧。這是未來,未來就在下周舊金山。