golang Java python这三种编程语言做计算密集型任务的性能比较
运行环境:笔记本电脑,cpu:intel i5-3230M@2.6G,windows7 64
1、golang
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
r := RandInt(10, 13) //产生范围内随机数,防止编译器优化
fmt.Println(r, time.Now().UnixNano())
t := time.Now().UnixNano()
sum := 0
for i := 0; i <= 40000+r; i++ {
for j := 0; j <= 40000; j++ {
sum = sum + i*j
}
}
i := float64(time.Now().UnixNano()-t) / (1000000 * 1000)
fmt.Println(sum)
fmt.Println(i)
}
func RandInt(min, max int) int {
rand.Seed(time.Now().UnixNano())
return rand.Intn(max-min) + min
}
运行结果:
go version go version go1.9.4 windows/amd64 $ gohello.exe 11 1522927426457018900 640384062001320000 1.0776608
2、python3.5.2
import time import random sum =0 r =random.randint(10,13) print(r) t = time.time() for i in range(40000+r): for j in range(40000): sum += i*j print(sum) print(time.time()-t)
运行结果:
$ python performance_test.py 12 640096001999880000 379.8369143009186
3、 java
运行结果:
结论:
python不出意料不适合做性能密集型的任务
而java的性能出人意料的好,golang的表现和java是同一层次的。
go vs. java:
go和java的区别主要在于内存消耗量,go的内存消耗量小 所以在高并发的时候go的优势不仅仅在于程序写法比较简洁(毕竟在程序语言层面就支持协程),而且在于内存优势。
附上一些Go的教程,适合刚入门级别看看,算是福利。关注头条号,私信回复“资料”获取。