我們都知道Python的底層代碼是c,那么在封裝之后碱妆,都說(shuō)Python速度慢肉盹,那么我們今天簡(jiǎn)單的測(cè)試一下,在計(jì)算100000000的累加結(jié)果速度對(duì)比疹尾。
為了更好的速度對(duì)比上忍,我先將C語(yǔ)言代碼生成動(dòng)態(tài)鏈接庫(kù)libnumadd.so在Python中進(jìn)行調(diào)用
c語(yǔ)言代碼
vim numadd.c
#include <stdio.h>
int num_test(){
int sum = 0;
for (int i=0; i<100000000; i++){
sum += i;
}
return sum;
}
# 生成.so動(dòng)態(tài)鏈接文件
clang --shared -o libnumadd.so numadd.c
python代碼
定義一個(gè)python_sum的方法,用來(lái)在Python中計(jì)算求和航棱,在main中調(diào)用libnumadd.so中的num_test的方法睡雇,并打印出兩次的結(jié)果做比較。
import time
from ctypes import CDLL
def python_sum():
sum = 0
for i in range(100000000):
sum += i
print(sum)
if __name__ == "__main__":
start_time = time.time()
python_sum()
end_time = time.time()
print(end_time-start_time)
start_time = time.time()
lib = CDLL("./libnumadd.so")
lib.num_test()
end_time = time.time()
print(end_time-start_time)
# 執(zhí)行結(jié)果
4999999950000000
5.95462203026
0.235713005066
# 足足快了25倍的速度