读书人

python里一个被调用了上百万次的小函数

发布时间: 2013-06-25 23:45:42 作者: rapoo

python里一个被调用了上百万次的小函数改成C语言能不能提高效率?
我有一个python程序,有一个函数是求两个向量的内积


def product(v1, v2):
sum = 0
for x,y in zip(v1,v2):
sum += x*y
return sum

该函数被调用180万次,占了程序运行时间的90%+,改成C语言的能不能提高效率?我上网搜了一下,改成C语言模块的话,链表里的元素也得用PyTuple_GetItem一个一个取出来,所以是不是也提高不了效率,哪怕一点点? Python C
[解决办法]
1.可以提高
2.你这个也不是优化写法
直接写 sum((x*y for x,y in zip(v1,v2))) 效率肯定比你原来的高
[解决办法]
关键路径上的代码当然值得优化,可以用C来实现,提升不止一点点。

楼上说效率一定高不敢认同,这得看Python的sum调用损耗是否可以忽略,这在C/C++里如此短小而高频的函数都是应当内联优化的。

读书人网 >perl python

热点推荐