Java Go python 运行速度对比

系统环境

System: CentOS Linux release 7.7.1908

Memory: 2G

CPU: 1 * Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz

Java: 1.8.0_131

Python: Python 3.7.3

Golang: go1.13.3 linux/amd64

测试方法

选用常用的冒泡排序分别使用三种语言进行1亿次排序,然后对比排序的最终时间。

Java

先使用 javac 编译 Speed.java 文件得到 Speed 字节码文件然后使用 time 命令计算程序运行的时间time java Speed

代码

public class Speed {

public static void main(String[] args) {

int num = 1000000000;

long start = System.currentTimeMillis();

for (int i = 0; i < num; i++) {

bubbleSort(1, 2, 3, 4, 5, 6, 7, 8, 9);

}

System.out.println(System.currentTimeMillis() - start);

}

public static void bubbleSort(int... arr) {

for (int i = 0; i < arr.length - 1; i++) {

for (int j = 0; j < arr.length - 1 - i; j++) {

if (arr[j] < arr[j + 1]) {

int temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

}

}

}

}

}

运行结果

java Speed 4.62s user 0.05s system 97% cpu 4.776 total

Golang

先编译 Golang 源文件 go build 然后运行编译后的文件 time ./speed

package main

import (

"fmt"

"time"

)

func bubbleSort(arr []int) {

for j := 0; j < len(arr)-1; j++ {

for k := 0; k < len(arr)-1-j; k++ {

if arr[k] < arr[k+1] {

temp := arr[k]

arr[k] = arr[k+1]

arr[k+1] = temp

}

}

}

}

func main() {

const NUM int = 1000000000

var arr []int

start := time.Now().UnixNano()

for i := 0; i < NUM; i++ {

arr = []int{1, 2, 3, 4, 5, 6, 7, 8, 9}

bubbleSort(arr)

}

fmt.Println((time.Now().UnixNano() - start) / 1e6)

}

运行结果

./speed 9.23s user 0.09s system 51% cpu 18.143 total

Python

直接使用 time 命令计算程序运行的时间time Python speed.py

代码

# coding:utf-8

import time

def bubble_sort(arr):

for i in range(len(arr)):

for j in range(len(arr) - 1 - i):

if arr[j] < arr[j + 1]:

temp = arr[j]

arr[j] = arr[j + 1]

arr[j + 1] = temp

if __name__ == '__main__':

NUM = 100000000

data = []

s = time.clock()

for k in range(NUM):

data = [1, 2, 3, 4, 5, 6, 7, 8, 9]

bubble_sort(data)

print(int((time.clock() - s) * 1000))

运行结果

python speed.py 1722.12s user 2.75s system 98% cpu 29:19.88 total

测试结果

Python

Golang

Java

1722.12s

9.23s

4.62s

总结

测试结果有点出乎意料,Python 的速度也太慢了吧。不过 Java 比 Golang 还要快一倍左右更出乎意料,也可能测试的纬度太过局限,没有网络io和磁盘io等其他方面的对比。其实编程语言的速度并非是衡量一种语言优劣的唯一标准,每种语言都有自己擅长的领域,不过程序的优劣和coder也有很大关系。

python java 速度_Java Go python 运行速度对比相关推荐

  1. java c 速度_Java和C#运行速度对比:Java比C#快约3倍

    测试条件: Java版本: Java 8, .NET版本:v4.0, Release模式,针对x86平台优化 单线程模式. Java代码: package javatest; public class ...

  2. java调用python项目实战_Java调用Python

    今天遇到Java调用一个Python脚本的问题,纠结了大半天,遇到各种问题.网上搜索的大部分都是用jython,但是我想要调用的python脚本里有import urllib,这个urllib也不是什 ...

  3. python字符串赋值与java区别_java和python细节总结和java中string 的+操作

    //JAVA中对arrayList的初始化,能够分配空间,不能之间让一个ArrayList赋值给另外一个ArrayList,这样是引用赋值,当一个改变时候,另外一个也改变 List tmp = new ...

  4. java和python的优势_Java和Python哪个更好?解读Python对比其他语言的优势

    人生苦短,我用 Python,为啥这么说,因为我们码农圈有金句:学完Python,便可上天 ~ 首先 我要向各位坦诚,我对 Python 的喜爱也是从几年以前才开始的.不经历长期的痛苦教训,我们是不会 ...

  5. java可以使用python的库函数_java调用python方法总结

    一.在java类中直接执行python语句 import org.python.util.PythonInterpreter; public class FirstJavaScript { publi ...

  6. 怎么运行java虚拟机_Java代码如何运行在Java虚拟机中

    我们都知道要运行Java代码就必须要有JRE,也就是Java运行时环境,JRE中包含了Java程序的必需组件,包括Java虚拟机以及Java核心类库,然而运行C++代码则不需要额外的运行时环境,只需要 ...

  7. hmacsha256 java实现_Java和Python生成不同的HmacSHA256输出

    我尝试在Python中生成与Java模板中相同的Hmac-SHA256签名.但是Python脚本生成的输出不同.我找不到我的错误.有人能帮我吗?在 爪哇public class Main { publ ...

  8. python java正则表达式_java 正则表达式

    Java 正则表达式 正则表达式定义了字符串的模式. 正则表达式可以用来搜索.编辑或处理文本. 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. 正则表达式实例 一个字符串其实就是一个简 ...

  9. java转python推荐算法_java和python实现一个加权SlopeOne推荐算法

    1 importjava.util.HashMap;2 importjava.util.Map;3 importjava.util.List;4 importjava.util.ArrayList;5 ...

  10. python除法编程_Java和Python中的整数除法,取余,舍入

    关于除法,你也许觉得没什么值得谈论的,毕竟小学的时候体育老师就教过我们了.然而对于编程中使用的除法,我觉得还是有很多值得注意的细节的.为什么我想深究一下?因为我日常主要使用Java和Python编程, ...

最新文章

  1. AM消息中间件OA、ERP消息提醒的必要工具
  2. 解决WebStorm中git出现的 Could not read from remote repository问题
  3. 超适合新手的基础Linux命令
  4. mysql之慢日志查询
  5. Debug Pytorch: ValueError: Expected more than 1 value per channel when training, got input size tor
  6. [蓝桥杯][2015年第六届真题]机器人塔(DFS)
  7. linux显示内存状态,Linux显示内存状态
  8. 前端学习(1886)vue之电商管理系统电商系统之首页路由的重定向主页侧边栏路由链接的改造
  9. python selenium 自动化 第四章-实用selenium+python实现web自动化测试第四节
  10. 在jquery中想要找到所以同辈元素方法_在jquery中siblings找到所有元素的同辈元素,是什么意思,有人可以给我详细讲解一下不?...
  11. docker探索-在centos6.5中安装docker(三)
  12. Pr插件大全一键安装包视频剪辑必备工具预设
  13. 微软易升级服务器,通过“微软Windows10易升”升级Win10 1803全程图解
  14. Qt优秀开源项目之十四:SortFilterProxyModel
  15. 支付宝资金预授权(冻结、解冻、转支付、异步通知回调、撤销、授权操作查询)
  16. 图片放大后很模糊怎么办?
  17. wireshark排查网络延迟问题
  18. java -jar .jar_Java_JAR命令JAR包闲谈;
  19. 优客365网站导航开源版 v1.5.2
  20. 【OpenCV 例程300篇】40. 图像分段线性灰度变换

热门文章

  1. ON_EVENT 报错
  2. KendoUI和wijmoUI 它们的Grid比较 20120423
  3. SQLHelp sql数据库的DAL
  4. PHP FCKeditor2.5 解决上传图片问题
  5. 剑指_4二维数组的查找(Python)
  6. 小程序webview 页面被放大_Android中WebView加载的网页被放大的解决办法
  7. localdatetime 格式化_LocalDateTime取代Data处理时间问题
  8. excel在线_如何把pdf转excel将文档保持原有格式
  9. Springboot: 修改启动时默认图案
  10. ARM开发7.5.1 基础实训( 5 ) 4×4 矩阵键盘和 2 路 LED 显示系统( 1)--LPC21XX