由于Python是顶层高级语言,而C/C++属于底层语言。因此在运行的速度上Python是比不上C/C++。在此我分别用C++和Python写了两个相同的函数,然后分别来运行。
首先用C++写下如下内容,文件保存为pycall.cpp
#include <iostream>
using namespace std;
extern "C" {
void dosomething(int n){
for(int i = 0; i < n; i++) i *= 2;
}
}
在函数里面做一个for循环操作,循环的次数由参数n决定。
接着用gcc编译:
gcc -o libpycall.so -shared -fPIC pycall.cpp
会生成一个libpycall.so文件。
接着在Python中调用C++,代码如下,文件命名为pythonCallC.py:
import ctypes
import time
start = time.time()
ll = ctypes.cdll.LoadLibrary
lib = ll("./libpycall.so")
lib.dosomething(100000)
print("**call by c++**")
print(time.time() - start)
其中,导入time库来计时,里面主要做的事情就是循环10万次。
同样在另外一个Python文件中写下如下代码,文件命名为pythonSelf.py:
import time
def dosomething(n):
for i in range(n):
i *= 2
start = time.time()
dosomething(100000)
print("**call by python**")
print(time.time() - start)
最后在terminal中运行这两个Python文件,结果如下:
可以看出,在Python中调用C++的执行速度要快于Python中直接执行的速度。特别是要实现的功能越复杂,差距越大。如果执行很简单的操作的话,就不好体现出C++的执行速度的优势。比如,可以看出,当只循环1000次的时候,Python还是比C++快很多的。