python、java、c、go執行速度對比
阿新 • • 發佈:2021-01-21
技術標籤:大資料
java、c、python、go的運算速度對比
python版本
NUM = 111181111 # 這是素數, 因此在迴圈結束前不會退出
def is_prime(n):
i = 2
while i < n:
if n % i == 0:
return False
i += 1
return True
if __name__ == '__main__':
is_prime(NUM)
測試的方式是使用linux的time命令,時間統一用total統計,比如統計go語言執行時間的命令如下:
➜ Desktop time ./speed
./speed 1.01s user 0.02s system 97% cpu 1.048 total
統計java如下:
➜ src git:(master) ✗ time java eg.Speed
java eg.Speed 1.14s user 0.05s system 95% cpu 1.256 total
其他幾個程式碼的版本如下:
java版本
package eg;
public class Speed {
static final long NUM = 111181111L;
public boolean isPrime (long n) {
long i = 2L;
while (i < n) {
if (n % i == 0) {
return false;
}
i += 1;
}
return true;
}
public static void main(String[] args) {
Speed s = new Speed();
s.isPrime(NUM);
}
}
c版本
int is_prime(long n) {
long i = 2L;
while (i < n) {
if (n % i == 0) {
return 0;
}
i += 1;
}
return 1;
}
int main() {
const long NUM = 111181111L;
is_prime(NUM);
}
go版本
package main
func is_prime(n int) bool {
/* 宣告區域性變數 */
var i = 2
for i < n {
if n % i == 0 {
return false
}
i++
}
return true
}
func main() {
const NUM int = 111181111
is_prime(NUM)
}
最終結果統計如下:
語言 | 執行時間(total)秒 |
---|---|
python 2.7.13 | 11.256 |
python 3.7.0 | 11.462 |
java 1.8.0_121 HotSpot | 1.256 |
c (Apple LLVM version 10.0.0) | 1.069 |
go 1.8.1 | 1.048 |
結論
go和c最快,java略慢,python2與python3速度差不多,但比前面三種語言慢10倍。原因我也查了一下,
簡單來說是因為2點:
1.Python等動態型別語言,在執行每一個簡單的操作時都需要大量的指令才能完成(包括做型別判斷,不同型別找出各自的方法,執行不同的指令);
2. C語言和Python的資料結構和演算法不同.
作者:ThomasYoungK 連結:https://www.jianshu.com/p/d60eff598aa0 來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。