pyinline库提供了一种将c代码内嵌到python脚本中进行内联变异的方法
详见http://pyinline.sourceforge.net/
粗略试了一下,如下:
#coding:utf-8
import PyInline
from time import time
m = PyInline.build(code="""
long my_add(int m) {
long sum = 0;
for (int i=0; i<m; i++)
sum += i;
return sum;
}
""", language="C")
def my_add2(m):
sum = 0
for i in range(m):
sum += i
return sum
start = time()
sum1 = m.my_add(1000000)
end = time()
print sum1, end-start
start = time()
sum2 = my_add2(1000000)
# sum2 = sum(range(1,1000000)) # 这个可能会快些
end = time()
print sum2, end-start
# output
#499999500000 2.86102294922e-06
#499999500000 0.898009061813
效率差别还是比较明显的,一种比较简单的计算效率优化方式,note一下。