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的教程,适合刚入门级别看看,算是福利。关注头条号,私信回复“资料”获取。