Python(2.7):函数计算量很大

时间:2014-01-28 19:45:16

标签: python function python-2.7 performance

python中的函数计算量是否昂贵?例如,如果我有很多循环而且我调用了我定义的函数,那么在主代码中编写函数的材料要贵得多吗?

优秀的程序员应该怎样做才能使他的代码尽可能高效?

2 个答案:

答案 0 :(得分:3)

与你在里面做的事情相比,函数调用的开销相对微不足道......最好有一个包含多个函数的干净代码,这些函数可以实现一个作业而不是1000行不可读的意大利面条代码。在Python中(在每种语言中都应如此),Readability counts

但是,如果您正在调用函数,则开销可能很重要(创建堆栈,返回值,跳转到代码地址等) 。例如,函数可以与迭代器一起使用并返回迭代器上应用的结果,而不是操作单个数据:

res = []
for x in elems:
     res.append(my_function(x))


res = my_function(x)  # this solution is way better for performance

如果您想估算一个函数调用的成本,可以使用... timeit module:)

答案 1 :(得分:1)

Python调用的开销很小,因为当前帧被推送到堆栈上,需要为正在调用的代码对象创建一个新帧。

但是这个开销相对较小,除非你在循环中连续调用一个小函数,否则你不会注意到这个固定成本。

您应该始终分析您的实际算法的计算复杂性,并尝试首先将其最小化。只有然后你应该看看内联函数。使用timeit module来衡量选项之间的时间差异。

但还要记住Zen of Python

  
      
  • 可读性很重要。
  •   

正确使用函数可以提高代码的可读性。不要过分试图将它们抛弃,以获得微小的性能提升。