使用较少的函数调用会增加总执行速度吗?

时间:2011-05-04 01:28:17

标签: python

  

可能重复:
  Does creating separate functions instead of one big one slow processing time?

OOP Bloop boop!

是的,OOP很棒,保持代码干净整洁。这就是我喜欢使用它的原因。我在使用函数(defs)时非常具体地指OOP。

取出我的函数调用并直接将函数的内容粘贴到我的算法中会增加整个代码的执行速度吗? 是的,我知道我可以自己进行测试,但我选择在我的同事编辑同事的论坛中提问,因为我知道这是一个浮在许多脑袋里的问题....

def myFunc(var):
   return var*3243 #perhaps more complicated function code will make a difference?

i = 0
hungry = True
while hungry:
  i = i + 1
  x = myFunc(i)
  if i > 50:
     hungry = False

3 个答案:

答案 0 :(得分:3)

正确编写(即将问题正确分为不同的函数和类),然后使用PyPy使其快速完成。

PyPy在其Just-In-Time编译器中使用函数内联和各种其他技巧来加速代码执行,而不必以速度名称使其无法维护。

请注意,此解决方案仅适用于您使用的Python 2.x系列以及与cpyext兼容的任何C扩展程序。

答案 1 :(得分:2)

显然Python中的函数调用开销非常高。

http://wiki.python.org/moin/PythonSpeed/PerformanceTips#Data_Aggregation

在选择编写一段代码的最佳方法时,是否值得记住? 当然。
速度是否值得让你的编码器更难理解? 可能不是。

答案 2 :(得分:0)

Python不会为你“内联”这个功能,所以当然会有开销。通常,函数中的代码将花费足够的时间来调用开销并不重要。

请记住,测试,调试和分析分解为函数的程序要容易得多。

如果你真的需要更多性能,那么在C或Cython中编写函数通常比消除调用开销更好[/ p>

值得注意的是,通常的代码设置如下

def main():
   ...

if __name__=="main":
    main()

比仅仅在顶级运行代码更快,因为标识符查找在函数/方法中比在全局命名空间中更快