簡單的效能測試說明為什麼Go比Java快?
本次小測試並不是試圖說明Go是Java的替代,Go lang和Java本就不是實現相同型別任務的語言 : Java是企業開發語言,而Go是系統程式語言。
我的系統配置是16 GB RAM,Intel(R)Core(TM)i7-8550U CPU 2.00GHz和500 GB SSD。
我只是使用Go和Java語言編寫了一個階乘程式,併為各種輸入建立了一個分析表和時間表。
Go程式碼:
package main import ( "fmt" "time" "math/big" ) func main(){ allInputs := [5]int64{10000, 50000, 100000, 500000, 1000000} var i int = 1 for i=0;i<len(allInputs);i++ { var before = GetTimeStamp() var factorial *big.Int = big.NewInt(1) var j int64 = 1 for j=1; j<=allInputs[i]; j++ { factorial = factorial.Mul(factorial,big.NewInt(j)) } var after = GetTimeStamp() var elapsedTime = after - before fmt.Println("Elapsed Time for %s is %s",allInputs[i],elapsedTime) } } func GetTimeStamp() int64 { return time.Now().UnixNano() / int64(time.Millisecond) } |
輸出:
Output: Factorial Time To calculate factorial 10000 0.03 seconds 50000 0.41 seconds 100000 2.252 seconds 500000 68.961 seconds 1000000 224.135 seconds |
Java程式碼:
import java.math.BigInteger; import java.util.*; class Forloop { public static void main(String []args){ int[] allInputs = new int[]{10000, 50000, 100000, 500000, 1000000}; for(int i=0;i<allInputs.length;i++){ BigInteger number = BigInteger.valueOf(allInputs[i]); BigInteger result = BigInteger.valueOf(1); long before = System.currentTimeMillis(); for (int j=1;j<=allInputs[i];j++){ result = result.multiply(BigInteger.valueOf(j)); } long after = System.currentTimeMillis(); System.out.println("Elapsed Time: "+(after - before)); } |
輸出結果:
Output: Factorial Time To calculate factorial 10000 0.112 seconds 50000 1.185 seconds 100000 2.252 seconds 500000 89.500 seconds 1000000 385.868 seconds |
從上面的程式中,我們可以看到Go對於各種輸入資料處理所用的時間比Java要短。
為什麼Go比Java更快?
Go被編譯為機器程式碼並直接執行,這使得它比Java快得多。之所以如此,是因為Java使用VM來執行其程式碼,這使得它與Golang相比變慢。
Golang在記憶體管理方面也很出色,這在程式語言中至關重要。Golang沒有引用但有指標。
在區域性變數的情況下,與Java相比,Golang更好。區域性變數在Java語言和其他語言中是儲存在堆疊中。但是在Golang中有一個例外,它可以從函式返回指向區域性變數的指標。
相關文章
- cursor: pin S簡單說明以及測試、解決
- try的簡單效能測試
- 面試官:為什麼 Promise 比setTimeout() 快?面試Promise
- 為什麼python比c更簡單Python
- 為什麼Python比Java簡單呢?Python值得學習嗎?PythonJava
- mysql簡單效能測試MySql
- 【PG效能測試】pgbench效能測試工具簡單使用
- Jmeter效能測試簡單使用JMeter
- eachdemo/rbac 的簡單說明
- 為什麼nginx效能比apache效能好NginxApache
- jarsigner 簡單使用說明JAR
- OpenGrok簡單使用說明
- 軟體測評中心簡要分析:為什麼要進行軟體效能測試?
- TSBS 是什麼?為什麼時序資料庫 TDengine 會選擇它作為效能對比測試平臺?資料庫
- Python容器相關簡單效能測試Python
- 為什麼?為什麼?Java處理排序後的陣列比沒有排序的快?想過沒有?Java排序陣列
- 比Redis快5倍的中介軟體,究竟為什麼這麼快?Redis
- 單元測試效率優化:為什麼要對程式進行測試?測試有什麼好處?優化
- Sybase的效能說明
- 為什麼redis是單執行緒的以及為什麼這麼快?Redis執行緒
- 分支預測:為什麼有序陣列比無序陣列快?陣列
- 【PG效能】Postgresql效能相關(作業系統及資料庫簡單說明)SQL作業系統資料庫
- 移動效能測試---工具PerfDog簡單使用
- GoldenGate BR(bounded Recovery)簡單說明Go
- 過等保流程簡單說明
- 為什麼說Java的就業面廣?Java就業
- 測試夜點心:單元測試測什麼
- 軟體測試培訓分享:效能測試的目的是什麼
- Java IO學習筆記一:為什麼帶Buffer的比不帶Buffer的快Java筆記
- Redis為什麼是單執行緒?為什麼有如此高的效能?Redis執行緒
- 什麼是滲透測試?為什麼要做滲透測試?
- 先簡單說一說Java中的CopyOnWriteArrayListJava
- Go單元測試Go
- 使用python對oracle進行簡單效能測試PythonOracle
- redis是單執行緒的,為什麼這麼快Redis執行緒
- 介面測試的價值(為什麼要做介面測試)
- MySQL 中 MyISAM 中的查詢為什麼比 InnoDB 快?MySql
- 效能測試、負載測試、壓力測試有什麼區別?負載