1. 程式人生 > 其它 >python、java、c、go執行速度對比

python、java、c、go執行速度對比

技術標籤:大資料

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.1311.256
python 3.7.011.462
java 1.8.0_121 HotSpot1.256
c (Apple LLVM version 10.0.0)1.069
go 1.8.11.048

結論

go和c最快,java略慢,python2與python3速度差不多,但比前面三種語言慢10倍。原因我也查了一下,
簡單來說是因為2點:
1.Python等動態型別語言,在執行每一個簡單的操作時都需要大量的指令才能完成(包括做型別判斷,不同型別找出各自的方法,執行不同的指令);
2. C語言和Python的資料結構和演算法不同.

作者:ThomasYoungK 連結:https://www.jianshu.com/p/d60eff598aa0 來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。