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 也有很大關係。
- 作者:janlle
- 連結:https://www.jianshu.com/p/8bc8321cc613
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 不同環境Odoo執行速度對比Odoo
- Java & Go 泛型對比JavaGo泛型
- 直觀對比幾個不同 Python 程式碼片段的執行速度Python
- Java I/O流 複製檔案速度對比Java
- python多執行緒爬蟲與單執行緒爬蟲效率效率對比Python執行緒爬蟲
- Python 速度比 Java 快,你不得不承認!PythonJava
- Java HashMap和Go map原始碼對比JavaHashMapGo原始碼
- Java多執行緒之—Synchronized方式和CAS方式實現執行緒安全效能對比Java執行緒synchronized
- Go vs Java vs C# 語法對比GoJavaC#
- 針對使用非塊執行和塊執行併發壓測對比
- Go 和 Java 的效能對比,真的如此嗎?GoJava
- 【實測】Python 和 C++ 下字串查詢的速度對比PythonC++字串
- 執行java和go混合版本EdgeX FoundryJavaGo
- java stream()流對兩個集合進行比對Java
- ORM哪家強?java,c#,php,python,go 逐一對比, 網友直呼:全面客觀ORMJavaC#PHPPythonGo
- 比Python、Java更快的 Go 語言,能否稱霸江湖?PythonJavaGo
- pandas中的遍歷方式速度對比
- java與python哪個執行快?JavaPython
- 服務端 I/O 效能:Node、PHP、Java、Go 的對比服務端PHPJavaGo
- Java 17的計算速度比Java 8慢? - marianJava
- java 對執行緒安全支援有哪些?Java執行緒
- Python==與is對比Python
- Java、Scala、Python ☞ 本地WordCount詞頻統計對比JavaPython
- 你真的會寫迴圈嗎–8種遍歷方法執行速度深度°對比
- python執行系統命令四種方法比較Python
- Java中CompletableFuture與虛擬執行緒比較Java執行緒
- Go 與 C++ 的對比和比較GoC++
- 效能對比 Go、Python、PHP、C/C++、C# .Net、Java、Node.js、… 等多程式語言GoPythonPHPC++C#JavaNode.js
- javascript - 非同步與傳統多執行緒比對JavaScript非同步執行緒
- Oceanbase 和 TiDB 粗淺對比之 - 執行計劃TiDB
- 1.對Java平臺的理解。“Java是解釋執行”對嗎Java
- Kotlin 與 Java 對比KotlinJava
- java排序方式對比Java排序
- 用Java執行Python:Jython踩坑筆記JavaPython筆記
- Python 和 c++/c/java 對於負數的儲存方式對比PythonC++Java
- 為什麼Python停止執行?該如何應對?Python
- 對Java多執行緒的一些理解Java執行緒
- python執行Python