python vs golang_golang java python这几种编程语言做计算密集型任务的性能比较-Go语言中文社区...

golang java python这几种编程语言做计算密集型任务的性能比较

运行环境

笔记本电脑

cpu:intel i5-3230M@2.6G

windows7 64

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

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

java

import java.util.Random;

public class performance_test{

public static void main(String args[]){

Random rd = new Random();

int r = rd.nextInt(3)+10;

System.out.println(r);

long t1 = System.currentTimeMillis();

long sum =0;

for (int i =0;i<=40000+r;i++){

for (int j=0; j<=40000;j++){

sum += i*j;

}

}

System.out.println(sum);

float a =(float)(System.currentTimeMillis()-t1)/1000;

System.out.println("间隔时间:"+a + "秒");

}

}

java -version

java version "1.8.0_144"

Java(TM) SE Runtime Environment (build 1.8.0_144-b01)

Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

javac -d . -encoding utf-8 performance_test.java

java performance_test

11

640384062001320000

间隔时间:0.994秒

结论:

python不出意料不适合做性能密集型的任务

而java的性能出人意料的好,golang的表现和java是同一层次的。

go vs. java

go和java的区别主要在于内存消耗量

go的内存消耗量小 所以在高并发的时候go的优势不仅仅在于程序写法比较简洁(毕竟在程序语言层面就支持协程),而且在于内存优势。

参考下面的benchmark

https://benchmarksgame.alioth.debian.org/u64q/go.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值