本文試圖記錄下對流行的Java、Scala和Go語言多線程併發對比測試,做爲將來項目選擇開發語言的一個參考。
具體的語言對比測試包括:
1)java+concurrent包;
2)java+AKKA1.3包;
3)java+AKKA2.0包;
4)Scala+ AKKA1.3包;
5)Scala+ AKKA2.0包;
6) Go+goroutine
比對目標:一、性能對比;二、編碼難易程度對比。
測試的例子:
一、對1~N的天然數裏面統計有多少個質數。採用的算法是把1~N個天然數劃分紅多個數據段,而後交給多個子線程去分別累加,最後彙總各個子線程的總數。這樣,能夠充分利用多核的強大功能來加速程序的統計。從理論上看,這個例子是CPU資源敏感型的多線程例子。CPU資源越多,程序跑的就越快。例如,雙核的狀況下,程序所花時間是單核的一半左右。
因爲個人資源有限,只搞了3個測試環境,以下:
測試環境(一):java
一、硬件環境:AMD雙核2.8G,4G內存
二、軟件環境:winxp,JDK1.7,Scala2.91,AKKA1.3, AKKA2.0,GO1,
算法
測試環境(二):多線程
一、硬件環境:INTEL酷睿雙核2.4G,4G內存
二、軟件環境:winxp,JDK1.7,Scala2.91,AKKA1.3, AKKA2.0,GO1,
併發
測試環境(三):性能
一、硬件環境: INTEL酷睿 2.4G,4G內存
二、軟件環境:MAC OS,JDK1.7,Scala2.91,AKKA1.3, AKKA2.0,GO1,
今早,剛剛完成相關代碼編寫和初步測試工做。後面還須要把相關的代碼部署到3個不一樣的測試環境裏面進行測試,並寫出相關的測試報告。
.........................................
測試結果已經出來了,由於太長,就放到下一篇文章裏。點擊 測試